2012-01-16 31 views
4

我与我的App_Code文件夹有一个“小”问题。App_Code和服务器

我在学习ASP.NET,因此订购了一个支持ASP.NET 4.0的网络服务器。我正在使用Visual Web Developer编程我的网页。当我把我的网站上传到这个网络服务器时,一切运行良好。

但是,如果我再添加其他的web项目到我的服务器,我App_Code文件夹得到所有混乱。服务器想要根目录中的App_Code文件夹中的所有类文件。有没有什么办法可以在我的App_Code文件夹中创建子目录,或者让我的项目保持组织状态,或者我在这里忽略了这一点?

回答

2

如果你有机会到主机控制面板,它可能最好使用虚拟文件夹配置您的托管环境,为你的第二个网站,并从子文件夹中运行它,你应该看一看codeSubDirectoriesweb.config

+0

由此我可以指定每个网站(应用程序)应该在哪个文件夹中查找?要找到corrosponing类文件等? – aventic 2012-01-16 19:43:58

+0

对于所有的类文件,使用[class library](http://www.homeandlearn.co.uk/csharp/csharp_s16p1.html)可能会更好,然后只需添加项目引用即可。 – SliverNinja 2012-01-16 19:50:44

0

,例如www.example.com/ project-b。第一个站点仍然可以在根文件夹中运行,例如www.example.com。

所以这两个网站将主要从对方(就像他们现在分离在Visual Web Developer速成两个独立的项目)中分离出来。这两个站点都有自己的App_Code文件夹(和web.config文件)。

如果您没有访问配置面板,大多数主机提供商都愿意添加一个虚拟文件夹给你,因为它真的不是一个特殊的要求。

虚拟文件夹应显示为FTP文件夹中的常规文件夹,通常位于www或wwwroot文件夹中。现在您可以将您的项目文件复制到该文件夹​​中。

小心使用root-relative paths的网址在你的第二个项目,所以将所有链接,即使该网站是从子文件夹运行工作。根相对URL看起来像这样:

<asp:HyperLink runat="server" NavigateUrl="~/Default.aspx" /> 
<asp:Image runat="server" NavigateUrl="~/images/logo.png" /> 

当网站部署在虚拟文件夹这将自动转到www.example.com/project-b/Default.aspxwww.example.com/project-b/images/logo.png

如果您需要在另一个站点中重复使用代码,通常最好将这些代码移动到单独的类库项目类型中,然后将该项目的引用添加到每个网站项目中(右键单击该网站项目,选择添加引用...,然后选择项目选项卡并选择类库项目)。

0

你应该尽量避免使用App_Code文件夹中为自己的东西,特别是如果你使用一个Web应用程序项目。

每当你一个网站转换为Web应用程序项目,该过程实际上重命名现有的App_Code目录到Old_App_Code。

Here,即使这是特定的转换.NET 2.0的应用程序,我相信,因为转换4.0应用程序仍然在4.0也是如此做同样的事情:

非常非常重要的:因为ASP.NET 2。0试图动态编译它在运行时在应用程序的/ App_Code目录下找到的任何类,你明确地不要想要存储在“app_code”文件夹下作为VS 2005 Web应用程序项目的一部分编译的类。如果你这样做,那么这个类将被编译两次 - 一次是作为VS 2005 Web应用程序项目程序集的一部分,然后是ASP.NET的运行时。结果很可能是“无法加载类型”运行时异常 - 是由于您的应用程序中有重复的类型名称而导致的。相反,应该将类文件存储在项目的任何其他目录中,而不是命名为“app_code”的其他目录。这将通过“转换为Web应用程序”命令自动处理。该命令将重命名文件夹Old_App_Code。

1

好吧我找到了解决我的问题。尽管你的大部分答案都可以,但事实证明这对我来说是最好的。我创建了一个子域,并将所有文件投入到该文件夹​​中,并且工作正常。