2013-07-24 167 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

相關問題