答案似乎是,這不是真的需要。看來服務名稱是按照慣例創建的。如果您更改相應代碼:
[ServiceContract] // No use of the 'Name' property
public ISave<T> where T : BusinessObject
{
[OperationContract(Name="Save")]
void Save(T obj);
}
public class SaveCustomer : ISave<Customer>
{
public void Save(Customer obj) { /* Do stuff here */ }
}
然後將得到的配置應該類似於web.config
文件中的以下(假設basicHttpBinding
):
<service name="SaveCustomer">
<endpoint
address="http://localhost:8001/SaveCustomer/"
binding="basicHttpBinding"
contract="ISave`1[[FullyQualifiedNamespaceTo.Customer, AssemblyName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=....]]"
/>
</service>
我發現這個here在評論中接受的答案。顯然,您需要提供您自己的程序集名稱,版本,文化和公鑰。如果你沒有PublicKeyToken,我相信你可以離開它。
所以,看來你ISave<T>
界面上宣佈ServiceContractAttribute
,然後實現在一個名爲SaveCustomer
導致服務類,接口命名爲SaveCustomer
(這是什麼,我相信你以後)。雖然在web.config
文件中指定時,您可能不得不使用泛型類型的語法。
所以,如果你有其他服務類,例如:
public class SaveOrder : ISave<Order>
{
public void Save(Order obj) { /* Do stuff here */ }
}
,那麼你應該與其他服務端點配置結束:
<service name="SaveOrder">
<endpoint
address="http://localhost:8001/SaveOrder/"
binding="basicHttpBinding"
contract="ISave`1[[FullyQualifiedNamespaceTo.Order, AssemblyName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=....]]"
/>
</service>
HTH。