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