什么使ASP.NET项目成为应用程序vs库?

tel*_*all 7 asp.net visual-studio

我继承了一些ASP.NET代码(我是一个操作系统的人,而不是Web开发人员(还是;-)).该解决方案已经重新考虑,其中有多个项目(库和asp.net站点).除了库之外,还有两个asp.net项目(称为MAINSITE和SUBSITE).只有MAINSITE被用作官方网站(作为asp.net网站),MAINSITE依赖于SUBSITE asp.net网站中的代码,但不使用该网站本身.我试图找出如何清理它并将SUBSITE转换为库.

我的快速问题是,每当我调试MAINSITE(设置为默认值)时,它都会运行两个asp.net进程:MAINSITE和SUBSITE.所以,至少,我怎么能避免这种情况呢?有没有快速/临时解决方案?

我的详细问题是:

是什么让asp.net网站成为asp.net网站?例如,在C中,dll和exe之间的差异可以定义(表面上无论如何)作为库的主要和潜在的导出信息的存在(当然,除其他之外).如果我要将exe转换为DLL,我可能会:1.删除主代码2.确保公共接口正确(并正确导出)3.转换makefile以构建dll而不是exe.

有人能指出我对asp.net到.net lib的一些类似步骤吗?也许:1.摆脱index.aspx 2.摆脱web.config 3.删除任何*.cs文件?4.如何更改属性?5.任何陷阱?

非常感谢你的帮助.详细信息:Visual Studio 2008/.NET 3.5

wom*_*omp 3

有很多很多组件可以使应用程序作为 ASP.Net 应用程序运行。然而,就您的实际 Web 应用程序项目而言,它与通用库代码之间实际上没有太大区别,除了您的大部分代码依赖于 HttpApplication 运行时的存在这一事实。

任何使用 System.Web(尤其是 System.Web.UI)的代码都会因具有此依赖性而受到怀疑。例如,页面或 Web 控件事件处理程序(Init、Load、PreRender 等)中的所有代码都依赖于以下事实:存在引发这些事件的 HttpHandler(在 HttpApplication 内运行)。如果您在不在 ASP.Net 项目中的库中运行相同的 WebControl,则所有这些都不会发生,并且该控件将毫无用处。但是,如果在 ASP.Net 进程的上下文中执行,该完全相同的库将非常有用。

它实际上归结为您在哪个进程中运行该库。在大多数情况下,ASP.Net 进程是由 IIS 生成的,尽管也可以在其他类型的程序中托管 ASP.Net 进程。

不幸的是,没有一个简单的 5 步过程可以将 Web 项目转换为库。但根据经验,Webcontrols、.aspx 和 .ascx 代码隐藏不会进行转换。

要更详细地了解如何将代码生成 ASP.Net 程序,请参阅 Rick Strahl 的“ ASP.Net 的低级概览”。