2011-12-21 163 views
3

我在我的網站中啓用了支持Ajax的Web服務。支持WCF-Ajax的Web服務。服務未部署時定義

該服務位於網站根目錄下的WebServices文件夾中,該文件夾還包含自己的Web.config(因爲Ajax web.config的綁定與我網站另一層的配置衝突)。

我已經在我的母版頁添加了Web服務使用ScriptManager和使用jQuery來調用一個頁面中的服務。

這是所有工作的罰款本地運行在IIS 7中(Vista的)。

但是,當我發佈網站(本地文件系統,因爲我們必須手動將文件複製到我們的測試環境),然後將這些文件複製到我們的測試環境(在Windows Server 2008 R2上運行II 7.5),Web服務不起作用,我得到一個Javascript錯誤,說「服務沒有定義」。

如果我瀏覽到服務,然後我可以查看wsdl,但是如果我嘗試查看service.svc/js(頁面所尋找的相同url),則不會有問題,那麼我會收到一個404未找到的錯誤。

我已經做了谷歌搜索關於這個問題的很多,同時也有建議的Web.config修復的負荷,我已經嘗試了多種組合,到目前爲止,似乎沒有任何合作。

它是自己的服務是非常基本的。

[ServiceContract(Namespace = "MyService")] 
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] 
public class MyService 
{ 
    [OperationContract] 
    public JSONObject DoWork() 
    { 
    ...Do some logic 
    return JSONObject; 
    } 
} 

的JSONObject是我創建的只是擁有一些屬性被髮送到該頁面的類。正如我所說,這是所有工作在IIS本地託管。

---編輯

下面是在同一目錄坐作爲Web服務Web.Config中:

<?xml version="1.0"?> 
<configuration> 
    <system.serviceModel> 
    <bindings> 
    <webHttpBinding> 
     <binding name="default" /> 
    </webHttpBinding> 
    </bindings> 
    <services> 
    <service name="MyWebsite.WebServices.MyService" 
      behaviorConfiguration="MyWebsite.WebServices.MyServiceBehavior" > 
     <endpoint address="" behaviorConfiguration="MyWebsite.WebServices.MyServiceAspNetAjaxBehavior" binding="webHttpBinding" contract="MyWebsite.WebServices.MyService" /> 
    </service> 
</services> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name="MyWebsite.WebServices.MyServiceBehavior"> 
     <serviceMetadata httpGetEnabled="true"/> 
    </behavior> 
    </serviceBehaviors> 
    <endpointBehaviors> 
     <behavior name="MyWebsite.WebServices.MyServiceAspNetAjaxBehavior"> 
     <enableWebScript /> 
     </behavior> 
    </endpointBehaviors> 
    </behaviors> 
</system.serviceModel> 
</configuration> 

我也有我的根web.config中的以下部分:

<system.serviceModel> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> 
</system.serviceModel> 
+1

你可以在web.config中發佈你的配置嗎? – Rajesh 2011-12-21 11:18:10

+0

你看到部署之間有什麼不同?服務器上的服務有效的虛擬目錄或應用程序的文件夾?您是否使用相同版本的.NET框架等等。 – 2011-12-21 23:40:37

+0

Webservice文件夾只是網站應用程序根目錄中的一個文件夾。 .NET的版本是相同的,唯一的主要區別是一個是Vista上的IIS 7,另一個是Server 2008 R2上的IIS 7.5。 – Morgeh 2011-12-22 09:17:34

回答

1

我已經設法追查到這個問題。

它歸結爲補丁。下面的文章中提到的更新來解決該問題在IIS 7.5和Windows 7,但該補丁也適用於Vista和Windows Server 2008的

http://support.microsoft.com/kb/2520479

有解決涉及重新排序問題的第二個選項處理程序在受影響的機器上的IIS applicationHost.config文件中,我試過這個,它確實解決了這個問題。

第二個選項在上面的文章中描述。