2010-01-13 54 views
1

我部署了一個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

回答

1

我設法解決這個問題。我們正在使用Sahil Malik的優秀開源解決方案,WCFSupport。不知何故該DLL沒有被加載(即使註冊是在HttpModule和程序集的web.config中)。

在我在Visual Studio中創建的虛擬web應用程序項目中嘗試服務本身(添加了.svc文件,在web.config中添加了對我的服務DLL的程序集引用並在IIS中添加了新站點)後,我來到得出的結論是它不是服務本身,也不是IIS中的任何配置問題(即servicemodelreg.exe工具)。

所以它必須是爲.svc映射請求的代碼,更重要的是對其任何操作的請求都不起作用。我將Sahil的代碼複製到我們自己的解決方案中,然後部署它然後運行。爲什麼代碼現在工作,不知道,也許最初的WCFSupport dll是腐敗的,我們永遠不會知道。

無論如何,它現在的作品!

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> 
+0

在.svc文件的文件夾中有一個小的web.config來啓用asnet兼容性,但是因爲我使用了WebScriptServiceHostFactory,所以其餘部分不需要。 – Colin 2010-01-13 15:58:04

相關問題