我曾经为我的常规WCF服务覆盖CreateServiceHost并在那里修改端点(动态添加一些方法)。现在转移到Azure,并具有WCF服务Web角色,myServiceHost.Description.Endpoints为空(我认为这是正常的,因为整个工作正常)。但是,如果没有可用端点,我怎么能修改端点?
安德烈
// I can access this in Azure WCF Service Web Role
RoleInstanceEndpoint azureEndpoint = RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["Endpoint1"];
// but I need something like this (to modify it, as I used to do in plain WCF)
ServiceEndpoint usualEndpoint = myServiceHost.Description.Endpoints[0];
PS我可以在打开后修改它:
myServiceHost.Opened += AfterOpened;
然后
public static void AfterOpened(object sender, EventArgs e)
{
ServiceHost myServiceHost = sender as ServiceHost;
ServiceEndpoint usualEndpoint = sh.Description.Endpoints[0];
但这样调用动态生成的方法最终会出现如下错误:“由于ContractFilter不匹配,无法在接收方处理带有Action的消息'http://tempuri.org/ITestWCFService/Ping'在EndpointDispatcher。这可能是因为合同不匹配(发送方和接收方之间的操作不匹配)或发送方和接收方之间的绑定/安全性不匹配。检查发送方和接收方是否具有相同的合同和相同的绑定(包括安全性)要求,例如消息,传输,无)。“