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

Раньше я переопределял CreateServiceHost для своей обычной службы WCF и изменял там конечную точку (динамически добавляя какой-либо метод). Теперь, перейдя в Azure и имея веб-роль службы WCF, 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];

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


person Andres    schedule 16.12.2010    source источник


Ответы (1)


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

person Andres    schedule 17.12.2010