【发布时间】:2011-12-21 11:06:50
【问题描述】:
我的网站中有一个启用 Ajax 的 Web 服务。
该服务位于网站根目录中的 WebServices 文件夹中,该文件夹还包含它自己的 Web.config(因为 Ajax web.config 的绑定与我网站另一层的配置冲突)。
我已将 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>
【问题讨论】:
-
你可以在 web.config 中发布你的配置吗?
-
部署之间有什么区别?包含服务的文件夹是否是目标服务器上的有效虚拟目录或应用程序?是否使用相同版本的 .NET framework 等。
-
Webservice 文件夹只是网站应用程序根目录中的一个文件夹。 .NET 的版本是一样的,唯一的主要区别是一个是 Vista 上的 IIS 7,一个是 Server 2008 R2 上的 IIS 7.5。