2

ワーカー プロセスのカスタム ID を使用して、.NET Framework 4.0 をターゲットとする WCF サービスをホストするように IIS 6 を構成する必要があります。ID は、同じビジネス プロセスで相互作用するサービスのエコシステム全体のアクセス許可を識別および管理するために使用される、高度に制限されたドメイン アカウントです。

-ga フラグを指定して aspnet_regiis.exe を実行し、この ID アクセス許可をサーバー環境の関連する ASP.NET の場所に付与し、IIS_WPG グループに追加しました。自動生成された WSDL 仕様のインクルードを除いて、ほとんどの場合、物事は比較的うまく機能しているように見えます。最上位の WSDL 仕様 (つまり、path.to/MyService.svc?wsdl) へのアクセスは正常に機能しますが、IIS 6 は WSDL のインクルードに対する応答を返す前に接続をリセットしています (つまり、path.to/MyService.svc?xsd=xsd0)。など)。これは、サーバー上のループバック経由でアクセスした場合と、パブリック IP 経由でアクセスした場合の両方で発生します。既定のネットワーク サービス アカウントで実行するようにアプリ プールを再構成する場合は発生しません。

この特定の問題に関するドキュメントは見つかりませんでしたが、IIS 6 ワーカー プロセスがカスタム ドメイン ID で実行されているときに、.NET Framework の特定の部分が正しく動作しないという問題が発生したのは初めてではありません。IIS_WPG のメンバーがバッチ ジョブとしてログオンするための事前構成されたアクセス許可以外に、このアカウントのローカル セキュリティ ポリシーで特別な特権を構成していません。ワーカーを正しく機能させるために何が欠けている可能性がありますか?

編集:

イベント ビューアーにはエラーは含まれておらず、IIS ログにはサーバーが要求に対して 200 OK で応答したことが示されていますが、完全な状態値は200 0 64であり、Win32 状態コード 64 を示しています。

そのエラーで受け取るダンプnet helpmsg 64は次のとおりです。

指定されたネットワーク名は使用できなくなりました。

さまざまなエンティティからの応答は以下のとおりです。

  • Chrome:エラー 101 (net::ERR_CONNECTION_RESET): 接続がリセットされました
  • Firefox:ページの読み込み中にサーバーへの接続がリセットされました
  • Eclipse/Java: java.net.SocketException: 接続のリセット

編集:

サービス ログ( BNLによって提供される) により、次の例外ダンプが生成されました。

System.InvalidOperationException: 一時クラスを生成できません (結果 = 1)。エラー CS2001: ソース ファイル 'C:\WINDOWS\TEMP\vxmgwmnl.0.cs' が見つかりませんでした。エラー CS2008: 入力が指定されていません。

System.Xml.Serialization.Compiler.Compile (アセンブリの親、文字列 ns、XmlSerializerCompilerParameters xmlParameters、証拠の証拠) で System.Xml.Serialization.TempAssembly.GenerateAssembly (XmlMapping[] xmlMappings、Type[] の種類、文字列 defaultNamespace、証拠の証拠、 XmlSerializerCompilerParameters パラメーター、アセンブリ アセンブリ、Hashtable アセンブリ) の System.Xml.Serialization.TempAssembly..ctor(XmlMapping[] xmlMappings、Type[] タイプ、文字列の defaultNamespace、文字列の場所、証拠の証拠) の System.Xml.Serialization.XmlSerializer.. System.ServiceModel.Description.ServiceMetadataExtension.HttpGetImpl.XmlSchemaMessage.System.ServiceModel.Channels.Message.OnWriteMessage(XmlDictionaryWriter ライター) の System.ServiceModel.Channels.BufferedMessageWriter.WriteMessage(メッセージ メッセージ、BufferManager bufferManager、Int32 initialOffset、Int32 maxSizeQuota) の System.ServiceModel.Channels.TextMessageEncoderFactory の OnWriteBodyContents(XmlDictionaryWriter ライター) .TextMessageEncoder.WriteMessage (メッセージ メッセージ、Int32 maxMessageSize、BufferManager bufferManager、Int32 messageOffset) System.ServiceModel.Channels.HttpOutput.SerializeBufferedMessage (メッセージ メッセージ) で System.ServiceModel.Channels.HttpOutput.Send (TimeSpan タイムアウト) System.ServiceModel で。 Channels.HttpRequestContext.OnReply(メッセージ メッセージ、TimeSpan タイムアウト) System.ServiceModel.Channels.RequestContextBase.Reply(メッセージ メッセージ、TimeSpan タイムアウト) System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.Reply(MessageRpc& rpc) で

4

1 に答える 1

0

Microsoft KB 記事「ASP.NET 2.0 がユーザー アカウントで実行するように構成されている場合のエラー メッセージ: "一時クラスを生成できません"」のガイドラインを使用して、C:\Windows\Temp ディレクトリを見つけ、そのフォルダー プロパティを正しく調べました。をクリックして [プロパティ] を選択します。次に、[セキュリティ] タブに移動し、 [詳細]、[追加] の順にクリックしました。ローカル コンピューターの IIS_WPG グループの名前を入力し、特別なアクセス許可List Folder / Read Dataのみを許可しました。これで問題は解決しました。

于 2012-09-19T14:36:36.410 に答える