Могу ли я получить доступ к ServiceEndpoint в веб-роли службы Azure WCF? - PullRequest
0 голосов
/ 16 декабря 2010

Я использовал для переопределения CreateServiceHost для моей обычной службы WCF и изменения конечной точки (добавление некоторого метода динамически). Теперь, переходя на Azure и имея веб-роль службы WCF, myServiceHost.Description.Endpoints пуст (что, я думаю, нормально, поскольку все работает нормально). Но как я могу изменить конечную точку, если ее нет?

Andres

// 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];

но при этом вызов динамически сгенерированного метода может привести к ошибке, такой как: "Сообщение с действием" http://tempuri.org/ITestWCFService/Ping' не может быть обработано в получателе из-за несовпадения ContractFilter в EndpointDispatcher. Это может быть из-за либо несоответствие контракта (несовпадающие действия между отправителем и получателем), либо несоответствие привязки / безопасности между отправителем и получателем. Убедитесь, что отправитель и получатель имеют одинаковый договор и одинаковую привязку (включая требования безопасности, например, Сообщение, Транспорт, Нет) . "

1 Ответ

0 голосов
/ 17 декабря 2010

ОК, решение состоит в том, чтобы явно определить конечную точку в Web.config, чтобы мы могли ее поймать раньше, подробности здесь

...