2011-09-19 93 views
2

我在StackOverflow和其他地方看到了關於這個錯誤的幾個線程,但是,我一直無法得到我的問題的解決方案。ContractFilter不匹配錯誤

我有一個應用程序試圖調用Web服務方法。當它調用一個方法(提供登錄驗證)時,它工作得很好。然後,當它調用另一個函數(不是登錄/成員關係)時,它會生成此錯誤:

由於EndpointDispatcher中的ContractFilter不匹配,無法在接收方處理具有操作'http://tempuri.org/IMyAppData/GetSomeSpecialXML'的消息。這可能是因爲合同不匹配(發件人和收件人之間的操作不匹配)或發件人和收件人之間的綁定/安全性不匹配。檢查發送方和接收方是否有相同的合同和相同的綁定(包括安全要求,例如消息,傳輸,無)。

我重建並重新發布了Web服務,然後從客戶端應用程序中刪除了服務引用並重新創建它們。我仍然得到錯誤。下面是從客戶端應用程序的app.config文件相關的XML:

<system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
      <binding name="BasicHttpBinding_IMyAppData" closeTimeout="00:01:00" 
       openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" 
       allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" 
       maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" 
       messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" 
       useDefaultWebProxy="true"> 
       <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
        maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
       <security mode="None"> 
        <transport clientCredentialType="None" proxyCredentialType="None" 
         realm="" /> 
        <message clientCredentialType="UserName" algorithmSuite="Default" /> 
       </security> 
      </binding> 
     </basicHttpBinding> 
    </bindings> 
    <client> 
     <endpoint address="http://legolas.vectorcsp.home/MyAppSyncService/MyAppData.svc" 
      binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IMyAppData" 
      contract="MyAppData.IMyAppData" name="BasicHttpBinding_IMyAppData" /> 
    </client>  
</system.serviceModel> 

,這裏是從Web服務的web.config文件中有關XML:

<behaviors> 
    <serviceBehaviors> 
<behavior name="MyAppDataSvc.MyAppDataBehavior"> 
     <serviceMetadata httpGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="true" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
<serviceHostingEnvironment aspNetCompatibilityEnabled="false" /> 

這一切都發生在我的本地機器上。我只是試圖在客戶端應用程序上進行開發。任何人都可以建議我可以嘗試發現問題所在。

在此先感謝您提供的任何建議。


更新:我做了更多的測試。我已將Web服務發佈到開發服務器,而不是本地計算機。我仍然得到同樣的錯誤。我已經通過應用程序和Web服務的配置文件,我找不到任何問題。我將新創建的Web服務的web.config文件與先前版本的Web服務的web.config文件進行了比較,但沒有看到任何問題。我已將桌面應用程序的app.config文件的相關部分與Web服務的現有客戶端的web.config文件進行了比較,但我無法找到任何差異。

我已經使用Microsoft Service Configuration Editor在桌面應用程序和Web服務上啓用了跟蹤。當我運行桌面應用程序並引發錯誤時,Web服務的目錄或桌面應用程序的目錄中都不會創建日誌文件。

我完全停留在此。有沒有人有什麼建議?

謝謝。

回答

7

我發現了這個問題。

在客戶端應用程序的app.config文件中,端點的地址與服務的地址不匹配,如config.svcinfo中所列。因此,這兩個文件指向Web服務的不同實例和不同版本。