Если вы хотите реализовать специальную обработку для этого сценария, то вы можете добавить новый маршрут по схеме /{*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 - Пользовательские страницы ошибок
Другие стратегииОб обработке таких запросов также можно узнать в Это сообщение в блоге .
ОБНОВЛЕНИЕ
Если вы хотите пойти первым путем, вы будететакже необходимо добавить контроллер и представление для отображения некоторой пользовательской страницы ошибок.Если вы берете те же имена, что и в маршруте, вам нужно добавить в ваш проект следующее:
Файл 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
}
}
}
Файл 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>