0

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

4

1 回答 1

0

好的,解决方案是在 Web.config 中显式定义端点,这样我们就可以尽早捕获它,请参阅此处的详细信息

于 2010-12-17T08:59:30.197 回答