1

我正在将我的站点本地部署到我的 Windows 7 机器上的 IIS,该机器已经工作了一个月。安装了所有必要的功能,激活了 ASP.NET 等等。我还激活了 WCF 功能。

现在我正在尝试托管 WCF 服务。在 Visual Studio 中运行它时,它运行良好(除了我已经在 SO 上询问过的一些其他问题)。但是,在我的 IIS 上,它给出了以下 IIS 错误:

HTTP-fejl 500.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>

这是我的 WCF 网络服务测试:

[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;
    }
}

当我删除行为/服务+处理程序条目时,我可以看到该错误已被删除。

现在,我的问题是:为什么它可以在 VS 2012 中工作,而不是在我的本地 IIS 上?我应该以某种方式将 WCF 服务设置为直接托管在 IIS 上吗?如果是这样,怎么办?

4

1 回答 1

0

我可以看到您的配置文件中有错误。WCF 相关的配置元素,如行为、serviceHostingEnvironment 和服务应该在<system.ServiceModel>标签内而不是在<system.webServer>. 尝试修复它,看看它是否适合你。

于 2012-10-17T23:46:47.727 回答