WCFサービスまたはWebサイトソリューションを開発するときは、チーム内の他の開発者とセットアップを共有できるように、常にカスタム構成ファイルでIISExpressを使用します。基本的に、次のコマンドを含むバッチファイルを実行します。
"C:\ Program Files(x86)\ IIS Express \ iisexpress.exe" /config:service-hosts.config
ここで、service-hosts.configは、カスタム構成ファイルへのパスです。
この方法は完全に正常に機能しており、PC上の他のソリューション(それぞれ独自のservice-hosts.configファイルを使用)でも正常に機能します。ただし、この方法を使用してWCFサービスをロードする際に問題が発生し始めました。サービスルートディレクトリ、または組み込みのヘルプエンドポイントのいずれかを参照しようとすると、次のエラーが発生します。
HTTPエラー500.19-内部サーバーエラーページに関連する構成データが無効であるため、要求されたページにアクセスできません。
詳細なエラー情報:
モジュールIISWebコア
通知不明
ハンドラーはまだ決定されていません
エラーコード0x80070003
構成エラー構成ファイルを読み取れません
構成ファイル\?\ D:\ Projects \ MyProject \ WCFSite \ web.config
要求されたURLhttp:// localhost:80 /
物理パス
ログオン方法はまだ決定されていません
ログオンユーザーはまだ決定されていません
トレースディレクトリC:\ Users \ Spikeh \ Documents \ IISExpress \TraceLogFiles\をリクエストします
構成ソース:
-1:
0:
詳しくは:
このエラーは、WebサーバーまたはWebアプリケーションの構成ファイルの読み取りに問題がある場合に発生します。場合によっては、イベントログにこのエラーの原因に関する詳細情報が含まれていることがあります。
「重複する'system.web.extensions/ scripting / scriptResourceHandler'セクションが定義されています」というテキストが表示された場合、このエラーは、.NETFramework4で.NETFramework3.5ベースのアプリケーションを実行しているためです。 WebMatrixでこの問題を解決するには、[設定]ノードに移動して.NETFrameworkのバージョンを「.NET2」に設定します。web.configファイルから余分なセクションを削除することもできます。
詳細情報を表示»
私は何時間もデバッグしていて、このエラーを変更することはできません。ましてや修正することもできません。
service-hosts.configファイルをいくつかの異なるバージョンのapplicationHosts.configで上書きし、64ビットでIISExspressを実行し、web.configファイルを非常に基本的なバージョンに置き換え、ディレクトリにアクセス許可を設定してみました(私のPCのユーザーはアクセスできます)、アプリプールを変更しますが、それでも変更はありません。
奇妙なことに...プロジェクトプロパティのWebセクションで「IISExpress」を使用するようにWCFプロジェクトを変更し、その後プロジェクトをデバッグすると、すべてが正常に機能します...すべてのweb.config設定が設定されていても。
これは、IISExpressまたはservice-hosts.configファイルの実行方法を示しています...ただし、service-hosts.configファイル(関連するサイトに若干の変更を加えたもの)は、他のプロジェクトとまったく同じです。
注意すべき点が1つありますが(赤いニシンの可能性があります)、ソリューションをVS2012からVS2010にダウングレードし、フレームワークターゲットを.Net 4.0に変更しました...そのために何かがおかしな構成になっている可能性があるかどうかわかりませんか?
誰かアイデアはありますか?私は屋根から飛び降りるところです...
アップデート:
IISExpress(/ trace:eで実行)からのデバッグ情報は次のとおりです。
Running IIS...
Starting IIS Express ...
Initializing the W3 Server Started CTC = 5514916
PreInitSitesThread: Premature Exit Occured ( hr = 80070003 )
W3 Server initializing WinSock. CTC = 5514916
W3 Server WinSock initialized. CTC = 5514916
W3 Server ThreadPool initialized (ipm has signalled). CTC = 5514916
Start listenerChannel http:0
Successfully registered URL "http://*:80/" for site "MyWebsite" application "/"
Registration completed for site "MyWebsite"
AppPool 'MyCustomAppPool' initialized
InitComplete event signalled
IIS Express is running.
Enter 'Q' to stop IIS Express
IncrementMessages called
Request ended: http://localhost:80/ with HTTP status 500.19
そして、これが私のservice-hosts.configの重要な部分です。
<applicationPools>
<add name="Clr4IntegratedAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_BIN%\config\templates\PersonalWebServer\aspnet.config" autoStart="true" />
<add name="Clr4ClassicAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Classic" CLRConfigFile="%IIS_BIN%\config\templates\PersonalWebServer\aspnet.config" autoStart="true" />
<add name="Clr2IntegratedAppPool" managedRuntimeVersion="v2.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_BIN%\config\templates\PersonalWebServer\aspnet.config" autoStart="true" />
<add name="Clr2ClassicAppPool" managedRuntimeVersion="v2.0" managedPipelineMode="Classic" CLRConfigFile="%IIS_BIN%\config\templates\PersonalWebServer\aspnet.config" autoStart="true" />
<add name="UnmanagedClassicAppPool" managedRuntimeVersion="" managedPipelineMode="Classic" autoStart="true" />
<add name="IISExpressAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_BIN%\config\templates\PersonalWebServer\aspnet.config" autoStart="true" />
<add name="MycustomAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
<applicationPoolDefaults managedRuntimeLoader="v4.0" >
<processModel/>
</applicationPoolDefaults>
</applicationPools>
<listenerAdapters>
<add name="http" />
</listenerAdapters>
<sites>
<site name="MyWebsite" id="1">
<application path="/" applicationPool="MyCustomAppPool">
<virtualDirectory path="/" physicalPath="D:\Projects\MyProject\WCFSite\" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:80:" />
</bindings>
</site>
<siteDefaults>
<logFile logFormat="W3C" directory="%IIS_USER_HOME%\Logs" />
<traceFailedRequestsLogging directory="%IIS_USER_HOME%\TraceLogFiles" enabled="true" maxLogFileSizeKB="1024" />
</siteDefaults>
<applicationDefaults applicationPool="Clr4IntegratedAppPool" />
<virtualDirectoryDefaults allowSubDirConfig="true" />
</sites>
<webLimits />