WCF服务ajax方法调用返回404

时间:2010-01-13 12:38:07

标签: wcf sharepoint configuration rest service

我已经部署了一个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的程序集部分并加载(调试时断点为红色)。

修改:任何人?

2 个答案:

答案 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已经损坏了,我们永远不会知道。

无论如何,它现在有效!