Раньше я переопределял 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. , Это может быть из-за несоответствия контракта (несоответствие действий между отправителем и получателем) или несоответствия привязки/безопасности между отправителем и получателем. Убедитесь, что отправитель и получатель имеют одинаковый контракт и одинаковую привязку (включая требования безопасности, например Сообщение, Транспорт, Нет)».