6

IIS で URL にコロンを使用する際に問題があることがわかりました。他の人がここで提供した提案も見ました。

私が取り組んでいるサイトでは、次のように、映画、本などのタイトルをコロンを含めて URL に渡すことができるようにしたいと考えています。

mysite.com/Movie/Bob:The Return

MovieControllerこれは、たとえばmy によって文字列として消費され、さらに下の行で使用されます。

結腸は理想的ではないことに気づきました。他に提案はありますか?現在は貧弱ですが、すべてのコロン (:) から別の文字への検索と置換を行ってから、コントローラー側でそれを使用したい場合は後方置換を行っています。

4

5 に答える 5

7

これを web.config に追加して、この問題を解決しました。

<httpRuntime requestPathInvalidCharacters=""/>

これは、system.web セクション内にある必要があります。

デフォルトは次のとおりです。

<httpRuntime requestPathInvalidCharacters="&lt;,&gt;,*,%,&amp;,:,\,?"/>

したがって、コロンのみを例外にする場合は、次のようになります

<httpRuntime requestPathInvalidCharacters="&lt;,&gt;,*,%,&amp;,\,?"/>

詳細については、http: //msdn.microsoft.com/en-us/library/system.web.configuration.httpruntimesection.requestpathinvalidcharacters.aspxをご覧ください。

私が理解している限り、コロン文字は URL のエンコードされていない文字として受け入れられます。requestPathInvalidCharacters のデフォルトに追加した理由がわかりません。

于 2013-09-11T13:11:47.000 に答える
3

映画のタイトルのURL エンコードとデコードを検討してください。

あなたはで終わるだろうfoo.com/bar/Bob%58The%20Return

別の方法として、HTML ヘルパーを利用して、URL 内の URL に不適切な文字を削除することを検討してください(方法は ですURLFriendly())。コロンとプレースホルダー (ダッシュなど) の間の SEO の利点は、無視できる可能性があります。

于 2011-01-14T19:04:09.300 に答える
2

あなたのアプローチに関する最大の懸念の 1 つは、映画の名前が常に一意になるとは限らないことです (例: 「The Italian Job」)。また、他の不正な文字 (括弧など) についても同様です。

URL に ID 番号を使用して、データベース内の映画を検索することをお勧めします。URL に映画名の URL フレンドリなコピーを含めることもできますが、不正な文字がすべて含まれている元のタイトルに戻ることを心配する必要はありません。

良い例は、このページへの URL です。ページのタイトルを削除しても機能することがわかります。

URL の ASP.NET MVC コロン

URL の ASP.NET MVC コロン

于 2011-01-14T19:02:12.247 に答える
0

コロンは、 RFC 3986によると、URIで予約された無効な文字です。したがって、仕様に違反するようなことはしないでください。URLエンコードするか、別の文字を使用する必要があります。そして、ここにあなたが見るかもしれない素敵なブログ投稿があります。

于 2011-01-14T18:56:59.457 に答える
0

最も簡単な方法は、URL を作成するときに System.Web.HttpUtility.UrlEncode() を使用し、返される結果を解釈するときに System.Web.HttpUtility.UrlDecode を使用することです。最初に値をエンコードしないと、スペース文字にも問題が発生します。

于 2011-01-14T19:02:10.877 に答える