gpt4 book ai didi

c# - WCF-Ajax 启用的 Web 服务。部署时未定义服务

转载 作者:行者123 更新时间:2023-11-30 18:01:55 26 4
gpt4 key购买 nike

我的网站中有启用 Ajax 的 Web 服务。

该服务位于网站根目录下的 WebServices 文件夹中,该文件夹还包含它自己的 Web.config(因为 Ajax web.config 的绑定(bind)与我网站另一层的配置冲突)。

我已将 Web 服务添加到母版页中的脚本管理器,并使用 JQuery 在页面内调用该服务。

在 IIS 7 (Vista) 中本地运行一切正常。

然而,当我发布网站(本地到文件系统,因为我们必须手动将文件复制到我们的测试环境)然后将文件复制到我们的测试环境(在 Windows Server 2008 R2 上运行 IIs 7.5)时,Web 服务不会' 工作,我收到一个 Javascript 错误,提示“服务未定义”。

如果我浏览到该服务,那么我可以毫无问题地查看 wsdl,但是如果我尝试查看 service.svc/js(页面正在查找的相同 url),那么我会收到 404 not found 错误。

我已经就这个主题进行了大量的谷歌搜索,虽然有大量建议的 Web.config 修复,但我尝试了多种组合,但到目前为止似乎没有任何效果。

它自己的服务非常基础。

[ServiceContract(Namespace = "MyService")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
public class MyService
{
[OperationContract]
public JSONObject DoWork()
{
...Do some logic
return JSONObject;
}
}

JSONObject 是我创建的一个类,它只包含一些要发送到页面的属性。正如我所说,这一切都是在本地 IIS 中托管的。

---编辑

这是与 Web 服务位于同一目录中的 Web.Config:

<?xml version="1.0"?>
<configuration>
<system.serviceModel>
<bindings>
<webHttpBinding>
<binding name="default" />
</webHttpBinding>
</bindings>
<services>
<service name="MyWebsite.WebServices.MyService"
behaviorConfiguration="MyWebsite.WebServices.MyServiceBehavior" >
<endpoint address="" behaviorConfiguration="MyWebsite.WebServices.MyServiceAspNetAjaxBehavior" binding="webHttpBinding" contract="MyWebsite.WebServices.MyService" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="MyWebsite.WebServices.MyServiceBehavior">
<serviceMetadata httpGetEnabled="true"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="MyWebsite.WebServices.MyServiceAspNetAjaxBehavior">
<enableWebScript />
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
</configuration>

我的根 web.config 中还有以下部分:

<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>

最佳答案

我已经设法找到问题所在。

归结为补丁。以下文章提到了修复 IIS 7.5 和 Windows 7 中问题的更新,但该补丁也适用于 Vista 和 Windows Server 2008。

http://support.microsoft.com/kb/2520479

有第二个选项可以解决这个问题,它涉及在受影响的机器上的 IIS applicationHost.config 文件中重新排序处理程序,我已经尝试过了,它确实解决了这个问题。

第二个选项在上面的文章中有描述。

关于c# - WCF-Ajax 启用的 Web 服务。部署时未定义服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8588830/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com