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

时间:2011-12-21 11:06:51

标签: c# ajax wcf json

我的网站上有一个支持Ajax的Web服务。

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

我已将web服务添加到我的母版页中的scriptmanager,并使用JQuery在页面内调用该服务。

这在IIS 7(Vista)中本地运行良好。

然而,当我发布网站(本地到文件系统,因为我们必须手动将文件复制到我们的测试环境)然后将文件复制到我们的测试环境(在Windows Server 2008 R2上运行IIs 7.5),Web服务没有& #39;工作,我得到一个Javascript错误说'#34;服务未定义"。

如果我浏览到该服务,那么我可以查看wsdl没有问题但是如果我尝试查看service.svc / js(该页面正在寻找相同的URL),那么我收到404找不到错误。

我已经完成了很多关于这个主题的谷歌搜索,虽然有大量建议的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>

1 个答案:

答案 0 :(得分:1)

我设法追查这个问题。

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

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

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

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