Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 从ASP.NET MVC应用程序的url中删除应用程序名称_Asp.net Mvc_C# 4.0_Asp.net Mvc 4 - Fatal编程技术网

Asp.net mvc 从ASP.NET MVC应用程序的url中删除应用程序名称

Asp.net mvc 从ASP.NET MVC应用程序的url中删除应用程序名称,asp.net-mvc,c#-4.0,asp.net-mvc-4,Asp.net Mvc,C# 4.0,Asp.net Mvc 4,在我的开发环境中 Url.Action("Index", "User") ---> /user 在生产中,应用程序在名为“ucms”的应用程序下配置 我有基于url(即/user)的授权,因此在生产环境中失败。如何解决此问题以删除UCM 编辑 路线是一个人的默认路线。仅供参考,我已将应用程序从mvc 3.0升级到4.0 routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute(

在我的开发环境中

Url.Action("Index", "User") ---> /user
在生产中,应用程序在名为“ucms”的应用程序下配置

我有基于url(即/user)的授权,因此在生产环境中失败。如何解决此问题以删除UCM

编辑 路线是一个人的默认路线。仅供参考,我已将应用程序从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中


在将url传递到数据库层时,我会将虚拟路径替换为空

Url.Action(“Index”,“User”).Replace(ConfigurationManager.AppSettings[“appvirtualpath”].ToString(), "~");


我通过在开发环境中添加虚拟路径解决了这个问题

Url.Action("Index", "User") ---> /user
右键单击项目、属性、web,然后单击虚拟路径

我不知道是否有办法在生产环境中配置它


我通过在开发环境中添加虚拟路径解决了这个问题

Url.Action("Index", "User") ---> /user
右键单击项目、属性、web,然后单击虚拟路径

我不知道是否有办法在生产环境中配置它


你能发布你的路线配置吗?我有点搞不清楚你到底想在这里做什么。您想在服务器上更改应用程序的url吗?您想在开发环境中更改应用程序的url吗?是否要为每个URL生成正确的URL?这就是Url.Action已经做的。。。我真的不明白你的问题是什么。另外,仅供参考,它不是~/ucms/User,除非您配置错误,它是~/User=/ucms/User..~表示应用程序根相对,应用程序根是/ucms。您可以发布您的路由配置吗?我有点搞不清楚您在这里实际要做什么。您想在服务器上更改应用程序的url吗?您想在开发环境中更改应用程序的url吗?是否要为每个URL生成正确的URL?这就是Url.Action已经做的。。。我真的不明白你的问题是什么。另外,仅供参考,它不是~/ucms/User,除非您配置错误,它是~/User=/ucms/User..~表示应用程序根相对,应用程序根为/ucms。感谢您的回复。我正在寻找一个通用的,例如,如果虚拟目录在其他环境中不同,数据库值需要再次更改为~/someothername/user。相反,它应该是~/user,数据库和应用程序需要管理不同的配置。波浪号(
~
)表示“主目录”,对于托管在虚拟路径上的网站,它将转换为虚拟路径,即在这种情况下为“/ucms”。这就是使用瓷砖的全部意义。否则,您只需存储绝对路径。我想问题在于您实际使用的存储值,而不是存储的值。@ChrisPratt,很抱歉造成混淆。我在数据表中将url存储为“~/user”以进行授权和site.map检查该url是否在数据库中配置并相应显示。在生产中,由于是“~/ucms/user”,所有菜单项都无法显示。我在想,如果在数据库中包含UCM,那么如果再次更改配置,可能会缺乏灵活性。所以,我想让数据库中的变量部分由应用程序和controllername/viewname管理,这就是我的观点。在生产环境中,您的URL不应该是“~/ucms/user”,而应该是“/ucms/user”。“ucms”位是应替换
~
的虚拟路径。在开发中,您将没有虚拟路径,因此
~
将被root(“/”)替换,您将以“/user”结束,而在生产中,它将被虚拟路径(“ucms”)替换,您将以“/ucms/user”结束。
~
的要点是使URL相对于站点的主URL工作,不管是什么。@ChrisPratt,最好在数据库中有“~/user”,然后使用“~”+URL.Action(“Index”,“user”)。替换(“/ucms”,在web.config中有可配置的“/ucms”值的“”。有什么想法吗?谢谢你的回复。我正在寻找一个通用的,例如,如果虚拟目录在其他环境中不同,数据库值需要再次更改为~/someothername/user。相反,它应该是~/user,数据库和应用程序需要管理不同的配置。波浪号(
~
)表示“主目录”,对于托管在虚拟路径上的网站,它将转换为虚拟路径,即在这种情况下为“/ucms”。这就是使用瓷砖的全部意义。否则,您只需存储绝对路径。我想问题在于您实际使用的存储值,而不是存储的值。@ChrisPratt,很抱歉造成混淆。我在数据表中将url存储为“~/user”以进行授权和site.map检查该url是否在数据库中配置并相应显示。在生产中,由于是“~/ucms/user”,所有菜单项都无法显示。我在想,如果在数据库中包含UCM,那么如果再次更改配置,可能会缺乏灵活性。所以,我想让数据库中的变量部分由应用程序和controllername/viewname管理,这就是我的观点。在生产环境中,您的URL不应该是“~/ucms/user”,而应该是“/ucms/user”。“ucms”位是应替换
~
的虚拟路径。在开发中,您将没有虚拟路径,因此
~
将被root(“/”)替换,您将以“/user”结束,而在生产中,它将被虚拟路径(“ucms”)替换,您将以“/ucms/user”结束。
~
的目的是使URL相对于站点的主URL工作,不管是什么。@ChrisPratt,在数据库中有“~/user”更好吗