我正在尝试使用我的Web应用程序设置启用了Ajax的WCF服务。我可以在Visual Studio中使用它,但是当我发布网站并将其托管在IIS上时,该服务似乎没有得到妥善管理。在IIS上托管Ajax的WCF服务返回错误500
例如:
当托管网站通过Visual Studio(与卡西尼我认为),我得到在我的本地localhost:62006/WebServices/SaphirExternService.svc/jsdebug
生成的JavaScript文件,让我打电话给在JavaScript中的Web服务的方法。
但是在生产环境中,当我应该得到/WebServices/SaphirExternService.svc/js
时,会出现服务器500错误。其实我甚至不能浏览到url/WebServices/SaphirExternService.svc
(同样的500)。
的错误是如下(翻译大约):
could not load the type 'System.ServiceModel.Activation.HttpHandler' from the assembly 'System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
MyService.svc包含:
<%@ ServiceHost Language="C#"
Debug="true" Service="WebApplication.WebServices.SaphirExternService"
Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory"
CodeBehind="SaphirExternService.svc.cs" %>
为遵循ASPX服务声明:
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="True">
<Services>
<asp:ServiceReference Path="~/WebServices/SaphirExternService.svc" />
</Services>
</asp:ScriptManager>
并在javascript中调用如下内容:
var service = new WebServices.SaphirExternService();
service.DoWork("test", DoWorkSuccess, null, null);
最后的Web.config:
<services>
<service name="WebApplication.WebServices.SaphirExternService">
<endpoint address="" behaviorConfiguration="WebApplication.WebServices.SaphirExternServiceAspNetAjaxBehavior" binding="webHttpBinding" contract="WebApplication.WebServices.SaphirExternService" />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="WebApplication.WebServices.SaphirExternServiceAspNetAjaxBehavior">
<enableWebScript />
</behavior>
</endpointBehaviors>
</behaviors>
这适用于Visual Studio的本身罚款然而,这不再发布,并在IIS托管工作时(因为不产生/js
文件,SaphirExternService没有定义) 。我试过使用几个端点配置(如bindingConfiguration
属性)无济于事。我错过了什么?