0

我正在将 MVC 3 站点发布到 go daddy 帐户。我在 VS 2010 中使用 FTP 发布实用程序。该站点发布“好的”。但这里有一个问题:

在我的本地机器上,当我运行它时,网址是:
localhost/Student/Create

在我的 go daddy 帐户中,我创建了一个名为 mvctest 的子目录。我创建了一个名为 mvctest.mysite.com 的子域,它指向 mvctest 的虚拟目录。这工作正常。

但是在我将我的网站发布到 www.mysite.com/mvctest 之后,我在所有链接中都获得了一个额外的 /mvctest/ 目录。我想要的是:
mvctest.mysite.com/Student/Create
我得到的是:
mvctest.mysite.com/mvctest/Student/Create

有趣的是,如果我手动输入我想要的内容,页面加载正常。如果我硬编码了一个指向根的链接,那很好,但我的所有 Url.Content 和 Html。链接添加额外的 mvctest 目录..

我已经搜索了所有内容,但没有找到解决这个困境的答案。我在 web.config 中尝试过,但我不认为这样做。我觉得 VS2010 中的 FTP 发布实用程序中的某些东西正在改变我的 global.asax 文件中的路由结构,但我不确定。

任何建议表示赞赏。

4

2 回答 2

0

您的虚拟目录是应用程序吗?如果未设置为应用程序,IIS 会将您站点的根目录视为应用程序并添加子目录。看到这个帖子

于 2012-08-06T01:08:13.277 回答
0

以下内容为我解决了同样的问题,并引用自我发现的一篇博文(来源):

所以现在是解决方案,我可能应该在一开始就提到这一点,但希望您使用的是安装了 URL 重写模块的 IIS7(当您在 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 Rewrite 将原始 URL(没有文件夹名称的 URL)添加到 ServerVariable,ASP.NET MVC 使用它来生成其他 URL。

于 2012-12-30T15:41:21.517 回答