2013-07-24 81 views
0

删除应用程序的名称在我的开发环境从URL中的ASP.NET MVC应用程序

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.Action( “索引”, “用户”)更换(ConfigurationManager.AppSettings [ “appvirtualpath”]的ToString(), “〜”。)。

+0

您可以发布您的路由配置的方法吗? –

+0

我对你在这里实际尝试做什么感到困惑。你想更改服务器上的应用程序的URL?你想在开发环境中更改你的应用程序的url?你想为每个生成正确的网址?这就是Url.Action已经做的事情......我真的不明白你的问题是什么。另外,fyi,它不是〜/ ucms/User,除非你配置错误,它是〜/ User =/ucms/User ..〜表示应用程序根目录,应用程序根目录是/ ucms。 –

回答

1

我在开发环境中添加虚拟路径

项目,性能,网络再虚拟路径右击解决了这个问题。

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

enter image description here

+0

感谢您的回复。我正在寻找一个通用的例如如果其他环境中的虚拟目录不同,则需要将数据库值再次更改为〜/ someothername/user。相反,它应该是〜/用户在数据库和应用程序需要管理不同的配置。 – Sunny

+0

我很困惑,为什么你有问题摆在首位。代字符('〜')的意思是“主目录”,对于托管在虚拟路径中的网站来说,它将转化为虚拟路径,即在这种情况下为“/ ucms”。这是使用代字号的完整点。否则,你只需要存储绝对路径。我在想但是你实际上使用这个存储值是问题,而不是存储的价值。 –

+0

@ChrisPratt,我很抱歉的混淆。我将数据表中的url存储为“〜/ user”用于授权,site.map检查url是否在数据库中配置并相应地显示。在制作中,由于它是“〜/ ucms/user”,所有菜单项都无法显示。我想如果我在数据库中包含ucms,如果配置再次发生变化,它可能缺乏灵活性。所以,想让数据库中的应用程序和控制器名/视图名管理可变部分。 – Sunny

相关问题