【发布时间】:2026-01-08 03:15:02
【问题描述】:
在我的开发环境中
Url.Action("Index", "User") ---> /user
在生产中,应用程序配置在名为“ucms”的应用程序下
Url.Action("Index", "User") ---> /ucms/User
我有基于 url 的授权,即 /user,所以它在生产环境中失败了。如何解决此问题以删除 ucms?
编辑 路由是默认的。仅供参考,我已将应用程序从 mvc 3.0 升级到 4.0。
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
编辑 我已经想出了一种方法来做到这一点,任何人都可以分享一下这方面的想法。
将虚拟路径存储在 web.config 中。
<add key="appvirtualpath" value="~/ucms"/>
在将 url 传递给数据库层时,我会将虚拟路径替换为空白。
Url.Action("Index","User").Replace(ConfigurationManager.AppSettings["appvirtualpath"].ToString(), "~");
【问题讨论】:
-
你能发布你的路线配置吗?
-
我对您在这里实际尝试做的事情感到有些困惑。您想在服务器上更改您的应用程序的网址吗?您想在开发环境中更改您的应用程序的网址吗?您想为每个生成正确的网址吗?这就是 Url.Action 已经做的......我真的不明白你的问题是什么。另外,仅供参考,它不是 ~/ucms/User 除非您配置错误,它是 ~/User = /ucms/User.. ~ 表示应用程序根相对,应用程序根是 /ucms。
标签: asp.net-mvc c#-4.0 asp.net-mvc-4