14657


すみません。  
あまり説明が上手くできないと思うのですが...

現在、SOAPによる通信でサーバ(IIS8.5 WindowsServer2012R2 C# ASP.NET
.Net4.5)とクライアント(Windows7 C# .Net4.5)の通信を行っています。  
VisualStudioを用いて、両者をdebugさせていた時は問題なかったのですが...サーバ環境にdeployしたところ、System.ServiceModel.FaultExceptionが発生してしまいました。  
Exceptionのメッセージには  
`サーバーは要求を処理できませんでした。 ---> パス 'D:\tmp\Setting.xml' へのアクセスが拒否されました。`  
と出て動作しません。  
確かに対象のpathのfileを読み込む処理は含まれているのですが、file自体は存在しており、アクセス制限なども加えておりません。

現在、手立ても無く、検討もつかない状況です。  
仕方が無いのでVBox環境にサーバ環境を作りなおしてVisualStudioを突っ込んでみようかとしているところですが、何か原因に心当たりのある方が居られましたら、ご助言お願い致します。


CC BY-SA 3.0
2015-05-14T03:02:39.260
10151
2015-09-09T01:17:31.407
2383
question
c# asp.net soap
SOAP接続のサーバ側でlocal fileの参照時にExceptionが発生している？


メッセージのとおりですが、その`UnauthorizedAccessException`は実行ユーザーが該当ファイルのアクセス権を有していない場合にスローされます。

アプリケーションプールの実行ユーザーとアクセス設定をもう一度確認してみて下さい。

なおWindows認証で偽装(Impersonation)が行われていて、権限セットが実行ユーザーではなくログインユーザーのものになっている可能性もあります。


CC BY-SA 3.0
2015-05-14T11:16:15.673
10178
2015-05-14T15:16:54.783
2015-05-14T15:16:54.783
5750
5750
10151
answer


基本的にはpgrhoさんも書かれている通り、実行しているプロセスのユーザーに問題のファイルのアクセス権があるか、という問題だと思います。

もう少し、わかりやすく言えば、豚吐露さんが問題のSetting.xmlとそのフォルダに対してアクセス権を設定していなくても、IIS上でASP.NETを実行しているアプリケーションプールの実行ユーザーに対して、デフォルトでそのフォルダを読み書きする権限が割り当てられているとは限らないということです。

  1. IISの設定で問題のASP.NETアプリが利用しているアプリケーションプールとその実行ユーザーを確認し
  2. Explorerで問題のファイルの「プロパティ/セキュリティ/詳細設定/有効なアクセス」を開き、実行ユーザーのアクセス権限があるか確認する

等で実際にそのアプリプロセスがが問題のファイルにアクセスできているのかを確認できるのではないかと思います。


CC BY-SA 3.0
2015-05-14T14:32:42.320
10187
2015-05-14T14:32:42.320
2947
10151
answer


本件について、経過を記載できていなかったので、記載させていただきます。

まず、解決はしました。  
原因は、file openが読み込み禁止モードで行われていたため、複数スレッドから同時に行われるfile
openによって後からアクセスした方が開けず当該errorが起きているということでした。

上記の現象がなぜ起きたかというと、当該ファイルから値を読み込みスタティックなメンバで保持しているのですが、値を読み込む条件が、メンバの中身が空だったらという判定となっていました。  
で、このファイルから読み込まれた値は、色々な機能から参照されるのですが、IIS起動時に複数のスレッドが値を参照したいという要求を投げていました。IIS起動時に行われる処理なので、debug時はたまたま差ができていたのでしょう。しかし、deployしたらその差が許容出来ないレベルで同時に行われてしまった。故に、`サーバーは要求を処理できませんでした。
---> パス 'D:\tmp\Setting.xml' へのアクセスが拒否されました。`というerrorが発生してしまったようです。

当たり前ですが、読み込み禁止モードでfile openしてるところを、書き込み禁止モードに変えただけで問題解決できました。  
実は、SOAPも何も関係無くただのfile openする部分を作った人が何も考えんと作ってただけでした。  
お騒がせいたしました。(´・ω・`)


CC BY-SA 3.0
2015-08-20T07:35:36.647
14657
2015-09-09T01:17:31.407
2015-09-09T01:17:31.407
2383
2383
10151
answer