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的组件部分和加载(在调试的时候破发点是红色的)。
编辑:任何人?
我设法解决这个问题。我们正在使用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>
在.svc文件的文件夹中有一个小的web.config来启用asnet兼容性,但是因为我使用了WebScriptServiceHostFactory,所以其余部分不需要。 – Colin 2010-01-13 15:58:04
有人吗?这太奇怪了...... – Colin 2010-01-13 13:27:55