34

純粋な WCF コンテキストでいくつかの RESTful サービスを実行しています (つまり、ASP.NET 互換性が有効になっていないため、HttpContext.Current使用できるオブジェクトがありません)。

サービスへの URL は、リクエストの開始時に を使用して書き換えられますIHttpModule(その時点では があり、HttpContextを使用して書き換えられます) 。これにより、URL から拡張子HttpContext.Current.RewritePathなどを取り除くことができます。.svc

ただし、WCF インフラストラクチャ内から要求された元の URL にアクセスする必要があります。またはクラスのどこかHttpContext.Current.Request.RawUrlに同等のものはありますか?を使用すると、元の URL ではなく、書き換えられた URL が返されます。OperationContextWebOperationContextWebOperationContext.Current.IncomingRequest.UriTemplateMatch.RequestUri

4

3 に答える 3

40

次のようにして、現在ターゲットになっているエンドポイントとその Uri を取得できます。

OperationContext.Current.RequestContext.RequestMessage.Headers.To

これは次と同じだと思います:

OperationContext.Current.IncomingMessageHeaders.To

これはオブジェクトであり、または、または必要な部分をSystem.Uri取得できると思います。OriginalStringPathAndQuery

于 2009-02-05T19:06:54.770 に答える
2

次のようなものを試してください:

OperationContext.Current.Channel.LocalAddress.Uri.AbsoluteUri
于 2013-03-07T13:49:35.880 に答える