3

ページの PageRank を返すために、アクションで URL を取得したいと考えています。次のようなルートがあります。

routes.MapRoute(
    name: "PRURL",
    url: "Utility/PR/{*url}",
    defaults: new { controller = "Utility", action = "PR", url = UrlParameter.Optional }
);

しかし、私が行くたびに、この問題を解決しhttp://localhost:1619/Utility/PR/http://google.comたいのですが、方法がわかりません!System.Web.HttpExceptionA potentially dangerous Request.Path value was detected from the client (:).

誰でも私を助けることができますか?


アップデート

やってみ[ValidateInput(false)]たけど解決しない!アクションはこれです:

[ValidateInput(false)]
public string PR(string url)
{        
    return GooglePageRank.PRChecker.PR(url);
}

追加によるUpdate2

<system.web>
   <httpRuntime requestValidationMode="2.0" />
</system.web>

問題は解決しませんでした!:(

最終的 にエラーは解決しましたが、URL が からhttp://google.comに変更されました。ここで問い合わせたところ、回答が得http:/google.comられました。

4

2 に答える 2

2

requestPathInvalidCharactersに属性を追加してみてくださいhttpRuntime

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

デフォルト値は&lt;,&gt;,*,%,&amp;,:,\,?

于 2012-08-07T04:22:44.247 に答える
1

自動リクエスト検証を無効にすることができます。

web.config:

<pages validateRequest="false">

またはアクションの場合:

[ValidateInput(false)]
public ActionResult PR(...

そして、web.config を忘れます。web.config に追加する必要があります。

<system.web>
  <httpRuntime requestValidationMode="2.0" />
</system.web>

または、URLをエンコード/デコードできます

于 2012-08-07T03:30:37.960 に答える