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

问题描述:

我试图在托管的子文件夹中运行一个小的ASP.NET项目。 我的域名是www.gorangligorin.com,但我想在www.gorangligorin.com/testmvc上运行我的应用程序。 ASP.NET MVC在顶层没有问题,但在子文件夹中没有问题。如何在一个子文件夹中托管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成为虚拟目录吗? – 2010-01-12 13:39:10

+0

我做了一个虚拟目录,它终于起作用了。至少第一页,子页面仍然不起作用。它看起来像MVC路由不起作用,因为它说“无法找到资源”。就像我试图访问不存在的子文件夹一样。 是否有其他设置需要更改? – gligoran 2010-01-12 18:43:00

+0

固定。我在编写自定义路线时犯了一个愚蠢的错误,结果导致无法正常工作:) – gligoran 2010-01-12 18:51:06

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

+0

我该如何做到这一点? – gligoran 2010-01-12 14:01:07

+0

您需要访问IIS。 – 2010-01-12 14:32:56

+0

从某种意义上说,这是解决方案。当我创建一个虚拟目录时,如果我想在其中创建一个asp.net应用程序,则会出现一个复选框。 – gligoran 2010-01-13 10:25:04

你试过以下吗?

<forms loginUrl="~/testmvc/Account/LogOn" timeout="2880" /> 

的代字号(〜)是HttpRuntime.AppDomainAppVirtualPath属性的快捷方式,它指的是虚拟应用程序的根,而不是Web服务器的根目录。

HttpRuntime.AppDomainAppVirtualPath 

http://msdn.microsoft.com/en-us/library/system.web.httpruntime.appdomainappvirtualpath.aspx

此外,什么是了星号?

Line 58:  <authentication mode="Forms">* 
+0

这不会有任何帮助。我已经尝试过,没有〜,有或没有/ testmvc /帐户/登录前,我已经尝试帐户/登录和testmvc /帐户/登录(没有/盈方)。 – gligoran 2010-01-12 14:04:43

+0

不知道星号是怎么来的,但它不在Web.Config或错误页面中。我编辑了原文。 – gligoran 2010-01-12 15:17:22

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

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

希望这会有所帮助。

+0

我试过了,但它确实没有太大的帮助。 – SwissCoder 2012-11-05 08:01:18

+0

如果设置正确,此功能可用...请参阅http://*.com/a/18217352/1339704 – Soenhay 2013-08-13 19:25:33

主要有两个原因针对此问题:

  1. 如果你还没有在IIS中配置了asp.net应用程序来设置虚拟目录作为一个应用程序

  2. 两个或多个Web.Config存在于您的网站上。因为你在根目录下有web.config,在子目录下有第二个web.config。所以只要删除那个web.config就可以了。或返回1,并在IIS

    相应解决它,因为你添加从根子目录,我要说的是,你必须改变你的路由在Global.asax文件,以处理路由

Url =“testmvc/{controller}/{action}/{id}”