klasa jest zdefiniowana w następujący sposób:Jak dynamicznie zmienić adres URL w Behavior WCF niestandardowe
public class BizTalkRESTTransmitHandler : IClientMessageInspector
Jestem metoda z tego podpisu:
public object BeforeSendRequest(ref Message request, IClientChannel channel)
Więc myślę, że trzeba manipulować kanał obiekt.
Powodem tego jest użycie w BizTalk 2010 SendPort do obsługi JSON. Próbowałem to do tej pory:
if (channel.RemoteAddress.Uri.AbsoluteUri == "http://api-stage2.mypartner.com/rest/events/2/"
|| channel.RemoteAddress.Uri.AbsoluteUri == "http://api.mypartner.com/rest/events/2/")
{
//TODO - "boxout" will become a variable obtained by parsing the message
Uri newUri = new Uri(channel.RemoteAddress.Uri.AbsoluteUri + "boxout");
channel.RemoteAddress.Uri = newUri;
}
Powyżej podano skompilować błędu: „System.ServiceModel.EndpointAddress.Uri” nie można przypisać - jest gotowy tylko”RemoteAddress wydaje się być tylko do odczytu, a także
mam odwoływać te pytania, ale nie używają obiektu kanału Assign a URL to Url.AbsoluteUri in ASP.NET i WCF change endpoint address at runtime ale oni nie wydają się mieć do czynienia z obiektem kanału
Aktualizacja 1:.. próbowałem następujące:
//try create new channel to change URL
WebHttpBinding myBinding = new WebHttpBinding();
EndpointAddress myEndpoint = new EndpointAddress(newURL);
ChannelFactory<IClientChannel> myChannelFactory = new ChannelFactory<IClientChannel>(myBinding, myEndpoint); //Change to you WCF interface
IClientChannel myNewChannel = myChannelFactory.CreateChannel();
channel = myNewChannel; //replace the channel parm passed to us
ale dał ten błąd: System.InvalidOperationException: próbowali dostać typ umowne IClientChannel, ale ten typ nie jest ServiceContract, ani nie dziedziczą ServiceContract.
Co z tworzeniem zupełnie nowego kanału, jak tutaj? Wygląda na przesadę. http://stackoverflow.com/questions/27782919/wcf-change-address-at-runtime-exception/27783784#27783784 – NealWalters