Я нашел ограничение в механизме маршрутизации для ASP.Net mvc, и я пытаюсь найти обходной путь.
Я опубликовал соответствующий вопрос здесь о проблеме, которая возникла у меня.
Суть проблемы в том, что маршруты, заканчивающиеся на. (точка) никогда не обрабатываются механизмом маршрутизации по умолчанию. Всегда выдается ошибка «Ресурс не найден». Например, он не может обрабатывать эти URL:
http://www.wikipediamaze.com/wiki/Washington,_D.C.
http://www.wikipediamaze.com/wiki/anythingendinglikethis.
если я изменю его на параметр querystring, он будет работать нормально:
http://www.wikipediamaze.com/wiki/?topic=Washington,_D.C.
Я пытаюсь найти точку расширения в механизме маршрутизации, которая поможет мне решить эту проблему. Я пробовал другие решения, как это:
//Global.asax.cs
protected void Application_Error()
{
var url = HttpContext.Current.Request.RawUrl;
if(TopicRegex.IsMatch(url))
{
var fixedUrl = FixUrlPath(url);
//This throws an error
Response.Redirect(fixedUrl);
//This also throws an error
Server.Transfer(fixedUrl );
}
}
Я предполагаю, что Response.Redirect и Server.Transfer выдают ошибки, потому что в MVC вы должны вызывать методы RedirectToAction из контроллера. Конечно, я не могу даже добраться до контроллера.
Это, кажется, довольно большое ограничение, учитывая, что сервер Apache, который использует Википедия, прекрасно справляется с этим. попробуйте http://en.wikipedia.org/wiki/Washington,_D.C. Если кто-нибудь может предложить какую-то помощь здесь, я был бы признателен.