問題

我剛剛開始建立一些WCF服務,但我有一個要求,讓它們向後相容遺留(.NET 1.1和2.0)客戶端應用程式.

我已經設法為3.0和更大的客戶端正確執行服務,但是當我使用basicHttpBinding端點發布服務時(我相信需要相容性),服務重構了我的方法signatures.例如

 public bool MethodToReturnTrue(string seedValue);
 

在客戶端應用程式中看起來像

 public void MethodToReturnTrue(string seedValue, out bool result, out bool MethodToReturnTrueResultSpecified);
 

我已經嘗試了我在自託管控制檯應用程式的app.config中可以想到的每個配置引數,但我似乎無法按預期使這個函式.我想這可能導致我的期望有缺陷,但我感到驚訝的是,WCF服務無法將bool返回型別處理到下一級客戶端.

我目前的app.config看起來像這樣.

 <?xml version="1.0" encoding="utf-8" ?>
<configuration>  
  <system.serviceModel>
    <services>
      <service behaviorConfiguration="MyServiceTypeBehaviors" Name="MyCompany.Services.CentreService.CentreService">
        <clear />
        <endpoint address="http://localhost:8080/CSMEX"    binding="basicHttpBinding" bindingConfiguration="" contract="IMetadataExchange" />
        <endpoint address="http://localhost:8080/CentreService" binding="basicHttpBinding" bindingName="Compatible" name="basicEndpoint" contract="MyCompany.Services.CentreService.ICentreService" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="MyServiceTypeBehaviors" >
            <serviceMetadata httpGetEnabled="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>
 

有人可以建議嗎?

  最佳答案

啊,這是殺了我!我在大約三個月前的工作中這樣做了,現在我不記得所有的細節。

但我確實記得,您需要basicHttpBinding,您不能使用新的序列化器(這是預設的);您必須使用“舊”XmlSerializer.

不幸的是,我不再在我這樣做的地方工作,所以我不能看程式碼.我會給老闆打電話,看看我能挖什麼.

  相同標籤的其他問題

c#.netwcfweb-servicesbackwards-compatibility