8

ASP.NETでは、実際の生のURLを取得する方法はありますか?

たとえば、ユーザーが「http://example.com/mypage.aspx/%2F」を参照した場合、 http://example.com/mypage.aspx/%2F 」ではなく「 http://example.com/mypage.aspx/%2F 」を取得できるようにしたいと思います。 「http://example.com/mypage.aspx//」より。

もちろん、それを行うためのクリーンな方法が欲しいのですが、リフレクションを使用したり、あいまいなプロパティにアクセスしたりすることで、ハッキーなアプローチで生きることができます。

現時点では、Authorization-header(これは機能します)でURIを使用しようとしていますが、常にそこにあるとは限りません。

編集:

私が本当にやりたいのは、「 http://example.com/mypage.aspx/%2F」と「http://example.com/mypage.aspx/%2F%2F 」を区別できるようにすることです。

ASP.NETは最初に「%2F%2F」を「//」に変換し、次にスラッシュを単一のスラッシュに変換するようです。

したがって、再エンコードするだけでは機能しません。

4

8 に答える 8

6

これはIISでのみ機能し、Visual Studioの一部であるASP.NET開発サーバーでは機能しないためテストできませんでしたが、次のことを試してください。

Request.ServerVariables ["HTTP_URL"]

于 2009-04-23T14:26:40.827 に答える
6

次のコードは私のために働きます:

IServiceProvider serviceProvider = (IServiceProvider)HttpContext.Current;
HttpWorkerRequest workerRequest = (HttpWorkerRequest)serviceProvider.GetService(typeof(HttpWorkerRequest));
string realUrl = workerRequest.GetServerVariable("HTTP_URL");

これはIISで実行している場合にのみ機能し、fx ASP.NETDevelopmentServerでは機能しないことに注意してください。

別のスレッドで答えてくれたLuceroと、スレッドを教えてくれたZhaphに感謝します。

于 2009-04-23T18:55:40.450 に答える
2

参照:

ユーザーがブラウザに入力した正確なURLを取得します

于 2009-04-23T15:09:03.563 に答える
1
 Server.HtmlEncode(Request.RawUrl);

生のURLは、ドメイン情報に続くURLの一部として定義されます。URL文字列http://www.contoso.com/articles/recent.aspxでは、生のURLは/articles/recent.aspxです。生のURLには、クエリ文字列が含まれています(存在する場合)。

参照:リンクテキスト

于 2009-04-23T13:13:44.480 に答える
1

ここでテストすることはできませんが、これが必要な場合があります。

Request.Url.AbsoluteUri
于 2009-04-23T13:15:53.150 に答える
1

Request.RawUrlアプリケーションの相対パス(クエリ文字列情報を含む)をRequest.Url返し、完全なパス(クエリ文字列情報を含む)を返します。

詳細については、「ASP.NETパスの意味を理解する」を参照してください。

于 2009-04-23T13:18:28.963 に答える
0

まあ、あなたはそれをurlエンコードされたバージョンにエンコードして戻すことができます。

于 2009-04-23T13:15:04.617 に答える
0

リクエストからURLを取得し、クエリ文字列部分のみをurlencodeしてから、それらを連結します

于 2009-04-23T13:15:55.597 に答える