如何将ASP.NET MVC网站托管在子文件夹中

9

我正在尝试在托管服务的子文件夹中运行一个小型ASP.NET项目。我的域名是www.gorangligorin.com,但我想在www.gorangligorin.com/testmvc上运行我的应用程序。 ASP.NET MVC在顶层运行没有问题,但在子文件夹中却无法正常运行。

服务器显示以下内容(第58行标为红色):

Line 56:             ASP.NET to identify an incoming user. 
Line 57:     -->
Line 58:     <authentication mode="Forms">
Line 59:       <forms loginUrl="~/Account/LogOn" timeout="2880" />
Line 60:     </authentication>

我该怎么做才能让这个ASP.NET MVC网站正常工作?由于这不是在我的电脑上托管的,所以我无法访问IIS配置。

1
你不能将testmvc设为虚拟目录吗? - Kris Krause
我创建了一个虚拟目录,现在终于可以用了。至少第一页是可以的,但子页面还是不行。看起来MVC路由没有生效,因为它提示“找不到资源”。就好像我尝试访问一个不存在的子文件夹一样。 是否还有其他设置需要更改? - gligoran
已解决。我在编写自定义路由时犯了一个愚蠢的拼写错误,导致它无法工作 :) - gligoran
4个回答

5

您的IIS根应用程序设置可能会影响子应用程序。为了防止根设置传播,请在根web.config中插入以下代码:

<location path="." inheritInChildApplications="false"/>

希望这可以帮到你。

如果正确设置,这将起作用...请参见https://dev59.com/_2025IYBdhLWcg3wKCb-#18217352 - Soenhay

3

您是否在IIS中为此目录创建了ASP.NET应用程序?否则,ASP.NET会认为您的服务器根目录是应用程序的根目录,而不是子目录中的根目录。


某种程度上这就是解决方案。当我创建虚拟目录时,有一个复选框,询问我是否要在其中创建一个ASP.NET应用程序。 - gligoran

1

这样做没有任何帮助。我已经尝试过加上和不加 ~,在 /account/logon 前面加或不加 /testmvc,我已经尝试了 account/logon 和 testmvc/account/logon(前面没有 /)。 - gligoran
不太清楚星号是怎么出现的,但它既不在Web.Config中也不在错误页面上。我编辑了原帖。 - gligoran

1

这个问题主要有两个原因:

  1. 如果您没有在IIS中将虚拟目录设置为应用程序,则会出现此问题。

  2. 您的站点上存在两个或多个Web.Config。由于您在根级别和子目录中都有web.config,所以如果它是相同的,请删除该web.config,或者返回第1步并在IIS中相应地解决它。

    由于您从根目录添加了一个子目录,因此我建议您在global.asax文件中更改路由以处理路由。

Url = "testmvc/{controller}/{action}/{id}"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接