Frage

ich einige RESTful Dienste in einem reinen WCF Kontext ausgeführt haben (das heißt ASP.NET-Kompatibilität nicht aktiviert ist, und somit gibt es keine HttpContext.Current Objekt vorhanden).

Die URLs zu den Diensten zu Beginn des Antrags neu geschrieben werden unter Verwendung eines IHttpModule (die an diesem Punkt eine HttpContext hat und schreibt es HttpContext.Current.RewritePath verwenden) aus der URL wie die .svc Erweiterung loszuwerden Dinge zu bekommen.

Allerdings muss ich die ursprüngliche URL zugreifen, die von innerhalb der WCF-Infrastruktur angefordert wurde. Gibt es ein Äquivalent zu den HttpContext.Current.Request.RawUrl oder OperationContext Klassen überall WebOperationContext? Mit WebOperationContext.Current.IncomingRequest.UriTemplateMatch.RequestUri kehrt die umgeschriebenen URL nicht das Original.

War es hilfreich?

Lösung

können Sie erhalten den Endpunkt zur Zeit gezielt und Uri für sie, indem Sie:

OperationContext.Current.RequestContext.RequestMessage.Headers.To

, die ich denke, ist das gleiche wie:

OperationContext.Current.IncomingMessageHeaders.To

Dies ist ein System.Uri Objekt, und ich glaube, man kann nur das OriginalString oder PathAndQuery bekommen, oder was auch immer Teile, die Sie von ihm wollen.

Andere Tipps

versuchen, etwas wie folgt aus:

OperationContext.Current.Channel.LocalAddress.Uri.AbsoluteUri

Ich habe, dass die Verwendung gefunden

OperationContext.Current.RequestContext.RequestMessage.Headers.To

Werke most der Zeit, aber nicht für meine Anwendung. Es ist hinter einem NLB (Network Load Balancer), die die ursprünglichen Eingangshostnamen verlieren verursacht. Aber der Eingang Host ist immer noch in einem Header namens „Host“, die überraschend schwer zu bekommen. Es befindet sich unter:

System.ServiceModel.Web.WebOperationContext.Current.IncomingRequest.Headers["Host"]

(die Header-Objekte System.ServiceModel.OperationContext.Current.IncomingMessageHeaders nicht wirklich alle Header aus dem Client)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top