我有一个从客户端JavaScript调用的WCF服务。调用失败,Service为null JavaScript错误。 WebDevelopment帮助程序跟踪显示加载jsdebug支持文件的调用导致404(找不到文件)错误。
在web.config中的编译标记上重新启动IIS或清除Temp ASP.Net文件或设置batch =“false”无法解决问题
从浏览器
https://Myserver/MyApp/Services/MyService.svc显示服务元数据
然而
https://Myserver/MyApp/Services/MyService.svc/jsdebug会产生404。
问题似乎与https协议有关。使用http / jsdebug下载支持的JS文件。
有什么想法吗?
TIA
答案 0 :(得分:12)
想出来了!
以下是web.config
中的服务配置部分查看端点上的bindingConfiguration属性。值“webBinding”指向绑定中的绑定名称=“webBinding”标记,这就是告诉服务使用HTTPS的传输级安全性。在我的情况下,属性值为空,导致通过HTTPS对/ js或/ jsdebug文件的webservice请求失败并抛出404错误。
<services>
<service name="MyService">
<endpoint address="" behaviorConfiguration="MyServiceAspNetAjaxBehavior" binding="webHttpBinding" bindingConfiguration="webBinding" contract="Services.MyService" />
</service>
</services>
<bindings>
<webHttpBinding>
<binding name="webBinding">
<security mode="Transport">
</security>
</binding>
</webHttpBinding>
</bindings>
请注意,如果通过http而不是https访问服务(在没有证书的本地计算机上进行测试),bindingConfiguration属性应为空(“”)
希望这有助于某人。
答案 1 :(得分:0)
如果在完成所有可能的工作后仍然出现相同的错误。只需添加“启用AJAX的WCF服务”。
答案 2 :(得分:0)
对我来说,问题如下:我们将MVC添加到带路由的解决方案中。我们的WCF服务没有被忽视。我通过添加以下规则解决了这个问题(其中&#34; WCF&#34;是我们保留服务的文件夹)。
routes.IgnoreRoute("WCF/{*pathInfo}");
希望能节省几个小时。