我可以在Azure WCF服务Web角色中访问ServiceEndpoint吗?

时间:2010-12-16 14:34:42

标签: wcf azure wcf-endpoint azure-web-roles

我曾经为我的常规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。这可能是因为合同不匹配(发送方和接收方之间的操作不匹配)或发送方和接收方之间的绑定/安全性不匹配。检查发送方和接收方是否具有相同的合同和相同的绑定(包括安全性)要求,例如消息,传输,无)。“

1 个答案:

答案 0 :(得分:0)

好的,解决方案是在Web.config中明确定义端点,所以我们可以早点识别它,详见here