- PR -

WebServiceをサーバーで動かすには??

投稿者投稿内容
shinovi
常連さん
会議室デビュー日: 2003/06/24
投稿数: 23
投稿日時: 2003-06-24 11:59
かなりの初心者ですが、誰か教えてください。

ローカルで作成したWebServiceを、サーバー側にデプロイメント プロジェクトで配置して実行したところ
以下のエラーで動きません!(T-T)
どうしたらいいんでしょうか!!
ローカルではバッチし動きます!!

クライアントの環境は
Windows2000、IIS5.0、.NET Framework1.1
サーバーの環境は
Windows.NET Server 2003、IIS6.0、.NET Framework1.1
(詳しい事はわかりません(ToT))

**********************↓以下のエラーが表示されます↓**************************

'/TestWebService' アプリケーションでサーバー エラーが発生しました。
--------------------------------------------------------------------------------

パス "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\testwebservice\1b010b28\\\\94da0207" へのアクセスが拒否されました。
説明 : 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。エラーに関する詳細および例外の発生場所については、スタック トレースを参照してください。

例外の詳細: System.UnauthorizedAccessException: パス "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\testwebservice\1b010b28\94da0207" へのアクセスが拒否されました。

この ASP.NET は、要求されたリソースへのアクセスを許可されていません。要求された ASP.NET へのリソースへアクセスを許可するかどうかを検討してください。ASP.NET プロセスには、アプリケーションに偽装が実行されていない場合は、通常、インターネット インフォメーション サーバー 5 では {コンピュータ名}\ASPNET、インターネット インフォメーション サーバー 6 ではネットワーク サービスが使用されます。<identity impersonate="true"/> 経由でアプリケーションに偽装が実行されている場合、ユーザーは、通常 IUSR_MACHINENAME に設定された匿名ユーザーか、または認証された要求ユーザーになります。

ASP.NET の書き込みアクセス権をファイルに設定するには、エクスプローラでファイルを右クリックしてプロパティを表示し、[セキュリティ] タブをクリックします。次に [追加] をクリックして、正しいユーザーまたはグループを追加してから、ASP.NET を反転表示し、希望するアクセス許可の横にあるチェック ボックスをオンにします。

ソース エラー:

現在の Web 要求の実行中にハンドルされていない例外が生成されました。障害の原因および発生場所に関する情報については、下の例外スタック トレースを使って確認できます。

スタック トレース:

[UnauthorizedAccessException: パス "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\testwebservice\1b010b28\94da0207" へのアクセスが拒否されました。]
System.IO.__Error.WinIOError(Int32 errorCode, String str) +393
System.IO.Directory.InternalCreateDirectory(String fullPath, String path) +632
System.IO.Directory.CreateDirectory(String path) +195
System.Web.Compilation.PreservedAssemblyEntry.DoFirstTimeInit(HttpContext context) +85
System.Web.Compilation.PreservedAssemblyEntry.EnsureFirstTimeInit(HttpContext context) +97
System.Web.Compilation.PreservedAssemblyEntry.GetPreservedAssemblyEntry(HttpContext context, String virtualPath, Boolean fApplicationFile) +29
System.Web.UI.TemplateParser.GetParserCacheItemFromPreservedCompilation() +91
System.Web.UI.TemplateParser.GetParserCacheItemInternal(Boolean fCreateIfNotFound) +148
System.Web.UI.TemplateParser.GetParserCacheItemWithNewConfigPath() +125
System.Web.UI.TemplateParser.GetParserCacheItem() +88
System.Web.UI.ApplicationFileParser.GetCompiledApplicationType(String inputFile, HttpContext context, ApplicationFileParser& parser) +171
System.Web.HttpApplicationFactory.CompileApplication(HttpContext context) +43
System.Web.HttpApplicationFactory.Init(HttpContext context) +485
System.Web.HttpApplicationFactory.GetApplicationInstance(HttpContext context) +170
System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) +414

*****************************************************************************

ちなみにメッセージが表示されるだけの単純なPGです。
長くなってすみません。
shinovi
常連さん
会議室デビュー日: 2003/06/24
投稿数: 23
投稿日時: 2003-06-26 10:03
もしかしたら
IIS 5.0の環境で作ったWebServiceを
IIS 6.0のサーバーで動かそうとしたのがいけなかったんでしょうか??


クライアントにIIS 6.0をインストールしたらうまくいったりするんですか?
やる価値があるんでしたらインストールするのですが...
どうなんでしょうか??
まりり
ぬし
会議室デビュー日: 2001/12/05
投稿数: 329
投稿日時: 2003-06-26 10:28
引用:

この ASP.NET は、要求されたリソースへのアクセスを許可されていません。要求された ASP.NET へのリソースへアクセスを許可するかどうかを検討してください。ASP.NET プロセスには、アプリケーションに偽装が実行されていない場合は、通常、インターネット インフォメーション サーバー 5 では {コンピュータ名}\ASPNET、インターネット インフォメーション サーバー 6 ではネットワーク サービスが使用されます。<identity impersonate="true"/> 経由でアプリケーションに偽装が実行されている場合、ユーザーは、通常 IUSR_MACHINENAME に設定された匿名ユーザーか、または認証された要求ユーザーになります。


って書いてあるんだからこのあたりを調べてみてはいかがでしょうね。

っていうか、よくわかってないのに開発環境と実行環境を揃えないのは
無謀ですよ。
shinovi
常連さん
会議室デビュー日: 2003/06/24
投稿数: 23
投稿日時: 2003-06-26 11:15
やはり環境が問題だったんでしょうか?
では環境を揃えてやってみます!

まりりさんありがとうございます。
まりり
ぬし
会議室デビュー日: 2001/12/05
投稿数: 329
投稿日時: 2003-06-26 13:12
安易に結論だしちゃだめですよ。

環境がそろってないとしたら、問題の切り分けができなくなります。
まずはそこを是正しましょうと言うだけなので。

通常、環境が原因で起きるトラブルをなくすために開発環境と
実行環境はできるだけ揃えると思います。

今回の場合、他にも原因となりそうなところはあるはずで、
順に検討してください。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-06-26 14:41
 IISのバージョンの前に、ASP.NETの実行ユーザを見極めるべきと思います。

1."C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\testwebservice\1b010b28\94da0207"のファイルアクセス権はどうなっていますか。
2.MSDNを「偽装」で検索し、当該Web Serviceのweb.configの内容と見比べaspnet_wp.exeの実行ユーザが偽装されていないか、調べてください。
3.2のユーザに1のファイルへのアクセス権があるかどうか、調べてください。このとき、すべてのディレクトリにアクセス権があることを確認してください。
4.3でアクセス権がなければ、与えてください。


なんか、「セキュリティを確保するために何の権限もないユーザに偽装しよう」と設定したところ、そのユーザがほんとに何もできなかった、というような感じがします。
shinovi
常連さん
会議室デビュー日: 2003/06/24
投稿数: 23
投稿日時: 2003-06-26 14:47
まりりさん、Jittaさんありがとうございます。

さっそくJittaさんの言うとおり
アクセス権を見てみます。

> 2.MSDNを「偽装」で検索し、当該Web Serviceのweb.configの内容と見比べ
> aspnet_wp.exeの実行ユーザが偽装されていないか、調べてください。

難しそうですが、調べてみます!!
shinovi
常連さん
会議室デビュー日: 2003/06/24
投稿数: 23
投稿日時: 2003-06-26 14:55
言い忘れていましたが。(すっかり忘れていました。

開発環境には"C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\testwebservice\1b010b28\94da0207"があるのですが、
実行環境には"\Temporary ASP.NET Files"までしか作られてなかったです。

だから”アクセスが拒否されました。”って出ていたと思うのですが...

スキルアップ/キャリアアップ(JOB@IT)