我已经部署了一个WCF服务到SharePoint,在我自己的机器上一切正常。导航到.svc可以正常工作,并且正如预期的那样,导航到service.svc/Operation
会生成“方法不允许消息”。使用jQuery发布到服务也可以在我自己的机器上完美运行。
但是,当我的同事从源代码控制中获取最新版本并部署该功能时,他可以导航到.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 :(得分:1)
我能想到的一件事是你错过了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>
答案 1 :(得分:1)
我设法解决了这个问题。我们使用的是Sahil Malik优秀的开源解决方案WCFSupport。不知怎的,dll没有被加载(即使注册是在web.config中用于HttpModule和程序集)。
在我在visual studio中创建的虚拟Web应用程序项目中首次尝试服务本身(添加了.svc文件,在web.config中添加了对我的服务dll的程序集引用并在IIS中添加了新站点),我来到结论是它不是服务本身,也不是IIS中的任何配置问题(即servicemodelreg.exe工具)。
所以它必须是映射.svc请求的代码,更重要的是请求它的任何操作都不起作用。我将Sahil的代码复制到我们自己的解决方案中,然后将其部署,然后才能运行。为什么代码现在可以工作,不知道,也许原来的WCFSupport dll已经损坏了,我们永远不会知道。
无论如何,它现在有效!