C# 应用程序代码和服务器

C# 应用程序代码和服务器,c#,asp.net,C#,Asp.net,我的应用程序代码文件夹有一个小问题 我正在学习ASP.NET,因此订购了一个支持ASP.NET 4.0的Web服务器。我正在使用VisualWebDeveloper编程我的网页。当我把我的网站上传到这个网站服务器时,一切都正常 然而,如果我在服务器上添加另一个web项目,我的App_代码文件夹就会变得一团糟。服务器希望所有我的类文件都位于根目录的App_Code文件夹中。我有没有办法在我的App_Code文件夹或其他东西中创建子目录来组织我的项目,或者我没有抓住要点?你应该在web.config

我的应用程序代码文件夹有一个小问题

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


然而,如果我在服务器上添加另一个web项目,我的App_代码文件夹就会变得一团糟。服务器希望所有我的类文件都位于根目录的App_Code文件夹中。我有没有办法在我的App_Code文件夹或其他东西中创建子目录来组织我的项目,或者我没有抓住要点?

你应该在web.config中查看一下。如果你有权访问托管控制面板,那么最好为你的第二个网站配置一个虚拟文件夹然后从子文件夹运行它,例如www.example.com/project-b。第一个站点仍可以在根文件夹中运行,例如www.example.com

因此,这两个站点本质上是相互隔离的,就像它们现在在VisualWebDeveloperExpress中作为两个独立的项目被隔离一样。这两个网站都有自己的App_代码文件夹和web.config文件

如果您无法访问配置面板,大多数托管提供商都愿意为您添加虚拟文件夹,因为这并不是一个特殊要求

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

请注意在第二个项目中使用URL,这样即使从子文件夹运行网站,所有链接也能正常工作。根相对URL如下所示:

<asp:HyperLink runat="server" NavigateUrl="~/Default.aspx"  />
<asp:Image runat="server" NavigateUrl="~/images/logo.png"  />
当网站部署到虚拟文件夹中时,将自动转到www.example.com/project-b/Default.aspx和www.example.com/project-b/images/logo.png


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

您应该尽量避免将App_Code文件夹用于自己的内容,尤其是在使用web应用程序项目时

每当您将网站转换为web应用程序项目时,该过程实际上会将现有的应用程序代码目录重命名为旧的应用程序代码

请看,尽管这是特定于转换.net 2.0应用程序的,但我相信它在4.0中仍然适用,因为转换4.0应用程序也会做同样的事情

非常非常重要:因为ASP.NET 2.0试图在运行时动态编译它在应用程序的/App_代码目录下找到的任何类,所以您显然不希望将编译为VS 2005 Web应用程序项目一部分的类存储在App_代码文件夹下。如果执行此操作,则该类将被编译两次—一次作为VS2005Web应用程序项目程序集的一部分,然后在运行时由ASP.NET再次编译。结果很可能是由于应用程序中存在重复的类型名称而导致无法加载类型运行时异常。相反,您应该将类文件存储在项目的任何其他目录中,而不是名为app_代码的目录中。这将由Convert to Web application命令自动处理。此命令将重命名文件夹旧的应用程序代码


好吧,我找到了解决问题的办法。虽然你的大多数答案可能也适用,但这在我的情况下被证明是最好的。我创建了一个子域,并将所有文件放入该文件夹,效果很好。

这样我就可以指定我的每个网站应用程序应该在哪个文件夹中查找?要找到相应的类文件等,最好对所有类文件使用一个,然后只添加一个项目引用。