App_Code和服务器

时间:2012-01-16 19:33:11

标签: c# asp.net

我的App_Code文件夹存在“微小”问题。

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

但是,如果我然后将另一个Web项目添加到我的服务器,则我的App_Code文件夹会变得混乱。服务器需要根目录中App_Code文件夹中的所有类文件。有什么方法可以在我的App_Code文件夹中创建子目录或者某些东西以保持我的项目有条理或者我在这里忽略了这一点吗?

4 个答案:

答案 0 :(得分:2)

您应该查看web.config

中的codeSubDirectories

答案 1 :(得分:1)

好吧,我找到了解决问题的方法。虽然你的大部分答案都可能有用,但事实证明这是我的最佳选择。我创建了一个子域并将所有文件扔进该文件夹,它工作正常。

答案 2 :(得分:0)

如果您可以访问托管控制面板,最好为您的托管环境配置第二个网站的虚拟文件夹,并从子文件夹运行它,例如www.example.com/的项目-B 即可。第一个站点仍然可以在根文件夹中运行,例如www.example.com。

因此,这两个站点基本上是彼此隔离的(就像它们现在被隔离为Visual Web Developer Express中的两个独立项目一样)。两个站点都有自己的App_Code文件夹(和web.config文件)。

如果您无法访问配置面板,大多数托管服务提供商都愿意为您添加虚拟文件夹,因为它实际上并不是特殊要求。

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

请注意在第二个项目中使用root-relative paths来表示URL,因此即使从子文件夹运行网站,所有链接也都能正常工作。根相对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

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

答案 3 :(得分:0)

您应该尽量避免将App_Code文件夹用于自己的东西,特别是如果您正在使用Web应用程序项目。

每当您将网站转换为Web应用程序项目时,该过程实际上会将您现有的App_Code目录重命名为Old_App_Code。

请参阅Here,即使这是特定于转换.net 2.0应用程序,我相信它仍然适用于4.0,因为转换4.0应用程序会做同样的事情。:

  

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