WCF服务ajax方法调用返回404

问题描述:

我部署了一个WCF服务到SharePoint,并在我自己的机器上一切正常。导航到.svc可以正常工作,并且正如所料,导航到service.svc/Operation会生成一个“方法不允许消息”。发布到使用jQuery的服务也适用于我自己的机器。WCF服务ajax方法调用返回404

然而,当我的同事会从源头控制的最新版本,并部署功能,他可以导航到的.svc好吧,但导航到service.svc/Operation生成404,和关闭过程室内用张贴的jQuery也不起作用。

我想这与事做我做了我的机器上配置(事后忘了:-S)和我的同事没有尚未配置。我们在他的机器上运行了ServiceModelReg -i

.svc文件是这样的:

<%@ ServiceHost Language="C#" Debug="true" Service="NameSpace.ServiceName" Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory" %> 

服务的组件装在web.config的组件部分和加载(在调试的时候破发点是红色的)。

编辑:任何人?

+0

有人吗?这太奇怪了...... – Colin 2010-01-13 13:27:55

我设法解决这个问题。我们正在使用Sahil Malik的优秀开源解决方案,WCFSupport。不知何故该DLL没有被加载(即使注册是在HttpModule和程序集的web.config中)。

在我在Visual Studio中创建的虚拟web应用程序项目中尝试服务本身(添加了.svc文件,在web.config中添加了对我的服务DLL的程序集引用并在IIS中添加了新站点)后,我来到得出的结论是它不是服务本身,也不是IIS中的任何配置问题(即servicemodelreg.exe工具)。

所以它必须是为.svc映射请求的代码,更重要的是对其任何操作的请求都不起作用。我将Sahil的代码复制到我们自己的解决方案中,然后部署它然后运行。为什么代码现在工作,不知道,也许最初的WCFSupport dll是腐败的,我们永远不会知道。

无论如何,它现在的作品!

我能想到的一件事是你错过了web.config中的serviceModel部分...是这种情况吗?这是像

<configuration> 
    <system.serviceModel> 
     <services> 
     <service behaviorConfiguration="behavior1" name="HelloWorld.service1"> 
      <endpoint address="" binding="wsHttpBinding" contract="MyServices.IHelloWorld" /> 
      <host> 
      <baseAddresses> 
       <add baseAddress="http://server/_wcf/HelloWorld.svc" /> 
      </baseAddresses> 
      </host> 
     </service> 
     </services> 
     <behaviors> 
     <serviceBehaviors> 
      <behavior name="behavior1"> 
      <serviceMetadata httpGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="false" /> 
      </behavior> 
     </serviceBehaviors> 
     </behaviors> 
    </system.serviceModel> 
    </configuration> 
+0

在.svc文件的文件夹中有一个小的web.config来启用asnet兼容性,但是因为我使用了WebScriptServiceHostFactory,所以其余部分不需要。 – Colin 2010-01-13 15:58:04