如何在运行时设置契约命名空间
本文关键字:契约 命名空间 设置 运行时 | 更新日期: 2023-09-27 18:12:50
我在客户端app.config中有以下内容。
<client>
<endpoint address=""
binding="basicHttpBinding" bindingConfiguration="SecureBinding"
contract="Project.Services.Contract.IMyContract" name="Endpoint_Default">
<identity>
<servicePrincipalName value="host/mikev-ws" />
</identity>
</endpoint>
</client>
我有以下代码在运行时设置一个端点。
private EndpointAddress GetEndpoint(string serverAddress, string serviceName)
{
string endpointURL = string.Format("http://{0}/Services/{1}.svc"
, serverAddress, serviceName);
EndpointIdentity spn = EndpointIdentity.CreateSpnIdentity("host/mikev-ws");
Uri uri = new Uri(endpointURL);
EndpointAddress endpoint = new EndpointAddress(uri, spn);
return endpoint;
}
如何在运行时设置合约值?
谢谢
你不把合同和EndpointAddress
联系起来,你把它和ServiceEndpoint
联系起来。反过来,您还可以将EndpointAddress
与ServiceEndpoint
相关联,如下所示:
ServiceEndpoint httpEndpoint = new ServiceEndpoint
(
ContractDescription.GetContract(
typeof(Project.Services.Contract.IMyContract),
typeof(Project.Services.MyContract)),
new WSHttpBinding { ... },
GetEndpoint(serverAddress, serviceName)
);
最终,应该将ServiceEndpoint
的实例添加到ServiceHost
:
host.AddServiceEndpoint(httpEndpoint);