2012-01-13 5 views
0

質問はクリアだと思います。私は、ユーザーが追加できるURL文字列を扱いたい。MVC3 - ユーザー入力(ブラウザのアドレスバー)から末尾を追加できるURL文字列を扱う方法

例;

http://download.cnet.com/windows/script alert('hello') /script 

または

http://download.cnet.com/windows/aaaaaaaaaaaaa 

あなたが例で見ることができるように、CNETは、これらの入力を処理し、カスタム404ファイルにユーザーをリダイレクトします。

私はmvc3かみそりに取り組んでいます、それは私が想定しているコントローラのものですが、私はそれを作ることができません。

追加情報: 私がしたいこと;私は、URLの終わりを追加することができる外部の文字列を処理したいです。別の例。 http://www.yazilimdevi.com/yazilimdevi/aaaaaaaaa ご覧のとおり、ユーザーが「aaaaaa」と入力するとURLが終了します。 IISで準備された「アプリケーションのサーバーエラー」を参照してください。私は、カスタムページを作成したい、と未知のパス、文字列またはスクリプトを追加したすべてのユーザーをリダイレクト...

おかげで...

+1

あなたのアプリを保護しようとしているシナリオは何ですか?指定したURLのようなURLは、アドレスバーにユーザーが入力しただけで問題ありません。また、いくつかのコードを提供できますか? –

+0

Sergey、ご意見ありがとうございました。私は私の質問を更新しました。 「追加情報」セクションをご覧ください。再度、感謝します。 –

答えて

0

あなたは、このシナリオのために特別な処理を実装する場合は、あなたが望むこと/{*arbitrary_url_part}スキームを使用して新しいルートを追加する。例えば、ルート

 routes.MapRoute(
      "SampleRoute", 
      "constant_path/{*variable_part}", 
      new {controller = "ErrorController", action = "ShowError", variable_part = ""} 
      ); 

は、これらすべてのURLに一致します:

http://Server_url/constant_path/(variable_part == "")

http://Server_url/constant_path/aaaaaaaaaaaaa(variable_part == "aaaaaaaaaaaaa")

http://Server_url/constant_path/script alert('hello') /script(variable_part = = "スクリプトの警告( 'hello')/スクリプト ')

などスラッシュやその他の特殊記号のユーザーpu参考のためにMSDN: ASP.NET Routing - Handling a Variable Number of Segments in a URL Pattern を参照してください。

あなたはすべてこのようなものを実装することに自分自身を気にしたいだけのユーザに空想404ページを表示したくない場合は、標準のASP.NETの機能を使用して検討するかもしれない - などを扱う上Custom error pages

その他の戦略をリクエストはThis blog postにもあります。

UPDATE

あなたが最初の道を行くしたい場合は、いくつかのカスタムエラーページを表示するためのコントローラとビューを追加することもあります。あなたはルートと同じ名前を取る場合は、あなたのプロジェクトに以下を追加する必要があります。このような方法ShowErrorでクラスErrorControllerを含む

  1. ファイルControllers/ErrorController.cs、:

    using System.Web.Mvc; 
    
    namespace Your_app_name_here.Controllers 
    { 
        public class ErrorController : Controller 
        { 
         public ActionResult ShowError(string variable_part) 
         { 
          return View((object)variable_part); // Cast to object is required here 
         } 
        } 
    } 
    
  2. ファイルViews/Error/ShowError.aspxを -

    <%@ Page Title="" Language="C#" Inherits="System.Web.Mvc.ViewPage" %> 
    <HTML> 
    <HEAD><TITLE>Error page title here</TITLE></HEAD> 
    <BODY> 
    <H1>variable_part = <%=Model.ToString()%></H1> 
    </BODY> 
    
次のようなエラー情報を表示する単純なHTMLビューです。
+0

私はそれを取得しません。私は書きましたが、変更してみてください。 "public static void RegisterRoutes(RouteCollection routes)"メソッドで、あなたのサンプルコードをGlobal.asax.csで試してみてください。ここに私が書いたものがあります。新しい{controller = "ErrorController"、action = "Index"} );"エラー"、 "{コントローラ}/{*。*}"、 –

+0

@LostInLib:私の答えは完全なコードスニペットではありませんでした。(もちろん、対応するErrorControllerにアクションShowErrorを追加し、エラー表示のための単純なビューを作成する必要があります。 –

+0

私の答えを更新しました –

関連する問題