2012-12-30 110 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 =“真” 然后一直使用的助手在你的网站地图和链接。 例如,链接到你的主页 不要主页 用途使用:首页 你的站点地图结点应该如下所示:

相关问题