gpt4 book ai didi

asp.net-mvc - 扩展 Asp.Net MVC 路由机制

转载 作者:行者123 更新时间:2023-12-04 20:03:59 25 4
gpt4 key购买 nike

我在 ASP.Net mvc 的路由机制中发现了一个限制,我正在尝试找到一种解决方法。

我发布了一个相关问题 here关于我遇到的问题。

问题的要点是路由以 . (句点)从不被默认路由机制处理。总是抛出“找不到资源”错误。例如它不能处理这些 url:

http://www.wikipediamaze.com/wiki/Washington,_D.C.
http://www.wikipediamaze.com/wiki/anythingendinglikethis.

如果我将它更改为这样的查询字符串参数,它可以正常工作:
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 中你应该从 Controller 调用 RedirectToAction 方法。当然,我什至无法到达 Controller 。

考虑到 Wikipedia 使用的 Apache 服务器可以很好地处理这个问题,这似乎是一个很大的限制。试试看 http://en.wikipedia.org/wiki/Washington,_D.C.如果有人可以请在这里提供一些帮助,我将不胜感激。

最佳答案

您可以检查路径中是否存在文件但允许某些扩展名通过吗?

routes.RouteExistingFiles = true;

// Ignore the assets directory which contains images, js, css & html
routes.IgnoreRoute("Assets/{*pathInfo}");

// Ignore text, html, files.
routes.IgnoreRoute("{file}.txt");
routes.IgnoreRoute("{file}.htm");
routes.IgnoreRoute("{file}.html");
routes.IgnoreRoute("{file}.aspx");

关于asp.net-mvc - 扩展 Asp.Net MVC 路由机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/945627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com