1

私は自分のサイトをWindows7マシンのIISにローカルに展開しています。これは1か月間機能しています。必要なすべての機能がインストールされ、ASP.NETがアクティブ化されます。また、WCF機能をアクティブにしました。

現在、WCFサービスをホストしようとしています。Visual Studioで実行している間は、完全に機能します(SOですでに質問した他の問題を除く)。ただし、私のIISでは、次のIISエラーが発生します。

HTTP-fejl500.19-内部サーバーエラー。

:ページに関連する構成データが無効であるため、要求されたページにアクセスできません。エラーコード:0x80070005通知:BeginRequestモジュール:IIS Webコア要求されたURL:...物理パス:...ログオンユーザー:まだ決定されていませんログオン方法:まだ決定されていませんハンドラー:まだ決定されていません構成エラー:構成ファイルを読み取ることができません構成ファイル:...構成ソース:

さて、これは私のweb.configです:

<system.webServer>
    <behaviors>
      <endpointBehaviors>
        <behavior name="ServiceAspNetAjaxBehavior">
          <enableWebScript />
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
    <services>
      <service name="ForumOperationService">
        <endpoint address="" behaviorConfiguration="ServiceAspNetAjaxBehavior"
            binding="webHttpBinding" contract="IForumOperationService" />
      </service>
    </services>
    <httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
      <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll"/>
      <dynamicTypes>
        <add mimeType="text/*" enabled="true"/>
        <add mimeType="message/*" enabled="true"/>
        <add mimeType="application/javascript" enabled="true"/>
        <add mimeType="*/*" enabled="false"/>
      </dynamicTypes>
      <staticTypes>
        <add mimeType="text/*" enabled="true"/>
        <add mimeType="message/*" enabled="true"/>
        <add mimeType="application/javascript" enabled="true"/>
        <add mimeType="*/*" enabled="false"/>
      </staticTypes>
    </httpCompression>
    <urlCompression doStaticCompression="true" doDynamicCompression="true"/>
    <modules runAllManagedModulesForAllRequests="true"/>
    <validation validateIntegratedModeConfiguration="false"/>
    <handlers>
      <remove verb="*" path="*.asmx"/>
      <add verb="*" path="*.asmx" type="System.Web.Script.Services.ScriptHandlerFactory" validate="false"/>
      <add name="AjaxToolkit" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    </handlers>
  </system.webServer>

そして、これは私のWCFWebサービステストです。

[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class ForumOperationService : IForumOperationService
{

    public string Horse(string prefixText, int count)
    {
        return "hestWCF";
    }

    public List<SystemTagDTO> GetTags(string prefixText, int count)
    {
        var dfasd = new List<SystemTagDTO>();
        dfasd.Add(new SystemTagDTO() { Isvisible = true, Value = "Aktant" });
        dfasd.Add(new SystemTagDTO() { Isvisible = true, Value = "Beretter" });
        return dfasd;
    }
}

ビヘイビアー/サービス+ハンドラーエントリを削除すると、エラーが削除されたことがわかります。

さて、私の質問は、ローカルIISではなくVS2012で機能するのはなぜですか。どういうわけか、IISで直接ホストされるようにWCFサービスを設定する必要がありますか?もしそうなら、どのように?

4

1 に答える 1

0

設定ファイルに誤りがあることがわかります。Behaviors、serviceHostingEnvironment、servicesなどのWCF関連の構成要素は、<system.ServiceModel>内ではなく、タグ内に含める必要があります<system.webServer>。それを修正してみて、それがあなたのために働くかどうか確かめてください。

于 2012-10-17T23:46:47.727 に答える