4

我有一个从客户端 JavaScript 调用的 WCF 服务。调用失败并出现 Service is null JavaScript 错误。WebDevelopment 帮助程序跟踪显示加载 jsdebug 支持文件的调用导致 404(找不到文件)错误。

重新启动 IIS 或清除 Temp ASP.Net 文件或在 web.config 中的编译标记上设置 batch="false" 不能解决问题

从浏览器

https://Myserver/MyApp/Services/MyService.svc显示服务元数据

然而

https://Myserver/MyApp/Services/MyService.svc/jsdebug导致 404。

问题似乎与 https 协议有关。使用 http /jsdebug 下载支持的 JS 文件。

有任何想法吗?

TIA

4

3 回答 3

12

弄清楚了!

这是 web.config 中的服务配置部分

查看端点上的 bindingConfiguration 属性。值“webBinding”指向绑定中的绑定 name="webBinding" 标记,这就是告诉服务使用 HTTPS 传输级别安全性的原因。在我的情况下,属性值为空,导致通过 HTTPS 对 /js 或 /jsdebug 文件的 Web 服务请求失败并引发 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 属性应该为空(“”)(在没有证书的本地机器上测试时)

希望这可以帮助某人。

于 2008-09-12T19:01:57.953 回答
0

如果在完成所有可能的工作后仍然出现相同的错误。只需添加一个“启用 AJAX 的 WCF 服务”。

于 2013-09-06T08:22:55.543 回答
0

对我来说,问题如下;我们将 MVC 添加到带有路由的解决方案中。我们的 WCF 服务没有被忽视。我通过添加以下规则解决了这个问题(其中“WCF”是我们保存服务的文件夹)。

routes.IgnoreRoute("WCF/{*pathInfo}");

希望可以节省几个小时。

于 2015-06-05T11:57:17.517 回答