MVC3 - Как обработать строку URL, которая может добавить конец с из пользовательского ввода (адресная строка браузера) - PullRequest
0 голосов
/ 13 января 2012

Я думаю, что вопрос ясен.Я хочу обработать строки 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 Ответ

0 голосов
/ 13 января 2012

Если вы хотите реализовать специальную обработку для этого сценария, то вы можете добавить новый маршрут по схеме /{*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 ==" предупреждение скрипта ('привет') / script ")

и т. Д.независимо от того, сколько слешей или других специальных символов вводит пользователь. Для справки см. MSDN: маршрутизация ASP.NET - обработка переменного количества сегментов в шаблоне URL .

Если вы не используетеЕсли вы не хотите возиться с реализацией всего этого, вы просто хотите показать пользователю причудливую страницу 404, тогда вы можете рассмотреть возможность использования стандартной функции ASP.NET - Пользовательские страницы ошибок

Другие стратегииОб обработке таких запросов также можно узнать в Это сообщение в блоге .

ОБНОВЛЕНИЕ

Если вы хотите пойти первым путем, вы будететакже необходимо добавить контроллер и представление для отображения некоторой пользовательской страницы ошибок.Если вы берете те же имена, что и в маршруте, вам нужно добавить в ваш проект следующее:

  1. Файл Controllers/ErrorController.cs, содержащий класс ErrorController с методом ShowError, например:

    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 - простое представление HTML для отображения информации об ошибке, например:

    <%@ 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>
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...