3

私は最近、パラメータで非ASCII文字を検出した場合、そのUrlHelper.IsLocalUrlメソッドは常にを返すことを検出しました。falseurl

例:

var isLocal = UrlHelper.IsLocalUrl("контакты"); //false

それはバグですか、それとも「設計による」ですか?

4

2 に答える 2

16

利用可能な最新の実装は、これらの条件をチェックしています。

  • URLはで始まり、その後にまたは"/"が続きません"/""\"
  • または、URLがで始まり、"~"その後に続く"/"

"/"したがって、このメソッドに渡されるすべてのURLは、またはで始まる必要があり"~/"ます。

また、不思議に思うかもしれませんが、現在のホストを考慮せず、httpたとえばのようなスキームをチェックしません。

更新:http://aspnetwebstack.codeplex.com/SourceControl/changeset/view/600963a4df15#src/System.Web.WebPages/RequestExtensions.cs で使用される実装へのリンクは次のとおりです。UrlHelper.IsLocalUrl

于 2012-10-05T21:15:45.623 に答える
1

おそらく、RFCのURLは、予約文字を使用してUS-ASCIIコードセットによって定義されているためです。
ここでURL仕様について読むことができます:http ://www.ietf.org/rfc/rfc1738.txt

そして、上記のサイト/ドキュメントからの引用:

URLは、US-ASCIIコード化文字セットのグラフィック印刷可能な文字でのみ書き込まれます。オクテット80-FF16進数はUS-ASCIIでは使用されず、オクテット00-1Fおよび7F16進数は制御文字を表します。これらはエンコードする必要があります。

つまり、私の推測は「設計による」ものです。

注:RFCは、URLなどの一部のテクノロジーの標準を設定するIETFによって設定されます。

于 2012-09-28T16:15:12.097 に答える