2012-12-30 146 views
-1

我已經發布了一個MVC 3網站到我的godaddy最終託管帳戶。我在VS 2010中使用了FTP發佈實用程序。除了一件事外,一切都可以正常工作。它將文件夾路徑信息添加到URL中。MVC3發佈到子文件夾,是將文件夾路徑添加到URL

在我的本地機器上運行它時,示例網址爲:
localhost:36370/About/History。

但是我發佈我的網站後,我得到了一個額外的/_sites/website/目錄添加到我的所有鏈接。

我要的是: www.mysite.com/About/History

我最終什麼得到的是: www.mysite.com/_sites/website/About/History

這是我用來顯示鏈接的代碼:
@ Html.ActionLink(「關於我們」,「歷史」,「關於」)

另一個有趣的事情是,如果我手動輸入我想要什麼,頁面加載正常。但由於某些原因,我的所有html.actionlinks和url.content都會將其他_sites/website/目錄添加到URL中。

我的主機使用IIS7.0,ASP.NET運行時版本:4.0。保存所有文件的目錄「網站」被設置爲應用程序根目錄。

我已經遍尋搜索,還沒有找到解決方案。我在this thread看到另一個類似的問題,但沒有答案。

這是我的第一個問題,所以我不知道我是否應該以某種方式「碰撞」另一個問題或者問我自己的問題。

此外,這是我目前使用的路線信息取自Global.asax.cs文件。

public static void RegisterRoutes(RouteCollection routes) 
    { 
     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 
     ); 
    } 

回答

2

經過數小時的搜索,我發現了一個解決我的問題。希望這篇文章能夠在未來一段時間內拯救別人。

以下是從博客文章(source)報價:

所以現在的解決方案,我也許應該在開頭已經提到這一點,但希望你正在使用IIS7安裝了URL重寫模塊(它在GoDaddy上使用IIS7時默認安裝)。 只需添加以下到您的web.config文件的system.webServer元素:

<rewrite> 
    <rules> 
    <rule name="Remove Virtual Directory"> 
     <match url=".*" /> 
     <action type="Rewrite" url="{R:0}" /> 
    </rule> 
    </rules> 
</rewrite> 

這一切確實是「重寫」的URL以本身。這會導致URL重寫將原始URL(沒有文件夾名稱的URL)添加到由ASP.NET MVC用於生成其他URL的ServerVariable。

+0

謝謝你救了我的時間和挫折小時! – Paul

0
<siteMap defaultProvider="MyXmlSiteMapProvider" enabled="true"> 
    <providers> 
    <add name="MyXmlSiteMapProvider" 
     description="SiteMap provider that reads in .sitemap files." 
     type="System.Web.XmlSiteMapProvider" siteMapFile="web.sitemap" /> 
    </providers> 
</siteMap> 

查找你的網站地圖提供商在你的web.config和刪除:securityTrimmingEnabled =「真」 然後一直使用的助手在你的網站地圖和鏈接。 例如,鏈接到你的主頁 不要主頁 用途使用:首頁 你的站點地圖結點應該如下所示:

相關問題