我曾经为我的常规 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];
但是这样调用动态生成的方法最终会出现错误,例如:“由于 EndpointDispatcher 的 ContractFilter 不匹配,无法在接收方处理带有 Action 'http://tempuri.org/ITestWCFService/Ping' 的消息. 这可能是由于合约不匹配(发送方和接收方之间的操作不匹配)或发送方和接收方之间的绑定/安全不匹配。检查发送方和接收方是否具有相同的合约和相同的绑定(包括安全要求,例如消息,传输,无)。”