首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

WCF 服務契約核心:ServiceContract/OperationContract 屬性、方法多載解決方案與 WSDL 驗證

     編輯:關於.NET

服務契約定義

建議定義在 介面 上 (支援繼承、多契約實作、修改實作不影響契約)。標註 [ServiceContract],操作標註 [OperationContract]。

[ServiceContract(Name="Service_Calculator", Namespace="Henllyee")]
public interface ICalculator {
    [OperationContract] int Add(int x, int y);
}
  • Name:契約/操作別名,避免名稱衝突
  • Namespace:WSDL 目標命名空間

方法多載問題與解決

WSDL 不支援 CLR 風格多載 (同名不同參數)。直接定義同名操作會編譯失敗。解法:用 OperationContract(Name="...") 指定唯一別名。

[ServiceContract(Name="Service_Calculator", Namespace="Henllyee")]
public interface ICalculator {
    [OperationContract(Name="IntAdd")] int Add(int x, int y);
    [OperationContract(Name="DoubleAdd")] double Add(double x, double y);
}

配置檔裝載驗證

<system.serviceModel>
  <services>
    <service name="Service.Calculator" behaviorConfiguration="mex">
      <host><baseAddresses><add baseAddress="https://localhost:8888"/></baseAddresses></host>
      <endpoint address="Calculator" binding="basicHttpBinding" contract="Service.ICalculator"/>
    </service>
  </services>
  <behaviors>
    <serviceBehaviors>
      <behavior name="mex"><serviceMetadata httpGetEnabled="true"/></behavior>
    </serviceBehaviors>
  </behaviors>
</system.serviceModel>

啟動宿主,瀏覽 https://localhost:8888/?wsdl,WSDL 中操作名已對應別名 (IntAdd/DoubleAdd)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved