我正在将我的站点本地部署到我的 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 上吗?如果是这样,怎么办?