2016-03-10 257 views
2

我正在尝试使用我的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属性)无济于事。我错过了什么?

回答

1

找到我的问题的解决方案,以防有人需要它以备将来参考。 svc文件未在IIS中正确映射。我删除了Handler映射中的所有*.svc相关配置。然后,在两个步骤:

  1. 添加新的MIME类型:
    • 扩展: .SVC
    • MIME类型:应用/八位字节流
  2. 处理映射>增加了一个新的托管代码处理程序:
    • 请求路径: * .SVC
    • 类型: System.ServiceModel.Activation.HttpHandler
    • 名称: SVC集成