在Apache上调试ASP.NET 1.1/2.0代码

apache|asp.net

    我们知道ASP.NET 1.1的项目由于微软设计和实现的原因,对IIS的依赖非常的紧密。不管是创建ASP.NET项目,还是打开、调试ASP.NET项目,都要求IIS运行正常,否则什么都做不成。那么当我们在Apache上运行ASP.NET后,可不可以对其进行源代码级的step into/out调试呢?

  由于Apache2项目中的mod_aspdotnet sub-project实现上的问题(也可以说是bug吧),使我们在其上运行ASP.NET程序时,和在IIS上的aspnet_wp|w3wp中运行的正确性上有一些差别,所以在Apache(mod_aspdotnet)上调试ASP.NET项目的源代码就很有必要。虽然ASP.NET 2.0已经正式release,不过1.1版本的项目还是目前的主流,所以我们分别看看Apache对这两个版本Framework的支持。正如我前面所说,ASP.NET 1.1的项目紧密地依赖IIS,所以目前我只能在Apache上调试已有的ASP.NET 1.1项目,而不能创建(原因后面再说)。由于IIS先安装并占用了80端口,所以我的Apache Web Server就只能运行在其它端口上了(如:8080,通过httpd.conf文件配置)。

  首先,我们需要让这个被调试的项目在IIS上运行正确,并且项目可以被VS.NET 2003 IDE正确开启。然后配置Apache,让这个项目同时在Apache上也运行正确。我们就可以通过IDE的Ctrl+Alt+P来Attach希望被debug的进程,这时我们会看到在任务列表(需要check "Show system processes")里居然有两个Apache.exe进程。这里我也不知道应该是哪个,虽然它们的类型都是".NET, Win32",不过只有一个是mod_aspdotnet的宿主进程。当然我们还是可以用个小trick来判断,就是打开taskmgr并刷新Apache上运行的Web站点的页面,看那个Apache.exe进程占用CPU,那么它就是asp.net支持模块的宿主。Attach成功后就可以在VS.NET里面设置断点,进行step into/out的源代码级调试了。

  上面是对ASP.NET 1.1项目的调试方法,如果是ASP.NET 2.0的项目呢?由于.NET Framework及Visual Studio 2005的改进,调试2.0的ASP.NET项目变得奇easy! 只需要把项目在Apache上运行好后,用Visual Studio 2005打开希望调试的页面的源代码(*.cs)文件,Attach上Apache的进程后直接设置断点就可以了,根本不需要开启项目,当然也就和IIS完全脱离关系了。

 
// 不管是1.1还是2.0,都需要确定到底是哪个Apache.exe进程是宿主

  在Apache上调试失败的已知可能问题:

  1、没有使用debug版的项目dll来运行,这个...还是问题吗?

  2、第二种情况,如果不注意,可能会认为是Apache不能调试1.1的Asp.net。就是如果机器上同时装了Fx1.1和Fx2.0,mod_aspdotnet会默认把我们的ASP.NET程序加载在Fx2.0上运行,这时如果用VS.NET 2003去调试将无法Attach任何Apache.exe进程。当然用Visual Studio 2005是可以的。解决办法需要在httpd.conf中使用"AspNetVersion v1.1.4322"命令显示指定Asp.net程序运行时的.NET Framework版本。

  前面我提到了1.1版本的Asp.net项目的建立必须要IIS,这是因为在创建项目时VS.NET 2003需要向IIS获取目前其支持的Asp.net的版本信息,然后通过一些Get和Post操作,创建一些项目必须文件在服务器上,具体步骤如下:

Created ASP.NET Project by VS.NET 2003 Command#region Created ASP.NET Project by VS.NET 2003 Command
GET localhost/DebugDemo/get_aspx_ver.aspx
500 Internal Server Error
GET localhost/get_aspx_ver.aspx
404 Not Found
GET localhost/DebugDemo/vs28758389629759149_tmp.htm
200 OK
POST localhost/DebugDemo/_vti_bin/_vti_aut/author.dll
100 Continue
401 Access denied
POST localhost/DebugDemo/_vti_bin/_vti_aut/author.dll
401 Access Denied
POST localhost/DebugDemo/_vti_bin/_vti_aut/author.dll
100 Continue
200 OK
POST localhost/_vti_bin/_vti_aut/author.dll
100 Continue
401 Access denied
POST localhost/_vti_bin/_vti_aut/author.dll
401 Access Denied
POST localhost/_vti_bin/_vti_aut/author.dll
100 Continue
200 OK
POST localhost/_vti_bin/_vti_adm/admin.dll
100 Continue
401 Access denied
POST localhost/_vti_bin/_vti_adm/admin.dll
401 Access Denied
POST localhost/_vti_bin/_vti_adm/admin.dll
100 Continue
200 OK
POST localhost/DebugDemo/_vti_bin/_vti_aut/author.dll
401 Access Denied
POST localhost/DebugDemo/_vti_bin/_vti_aut/author.dll
100 Continue
200 OK
POST localhost/DebugDemo/_vti_bin/_vti_aut/author.dll
#endregion
  同样在ASP.NET 2.0中,这个步骤完全不需要了,ASP.NET项目就是一个目录,完全的和Web Server脱离开了。我们也就再也不用因为IIS的捣乱,而使的不能开发ASP.NET程序了~~~

时间: 2024-10-28 05:54:16

在Apache上调试ASP.NET 1.1/2.0代码的相关文章

菜鸟十天学会ASP教程之第一天:安装调试ASP的环境

教程|十天学会 学习目的:安装调试ASP的环境,并且调试第一个简单的程序. 因为我们学ASP的目的就是想建立一个网站,那么一般习惯是建立的网站内所有文件应该同时放到一个文件夹中(当然这个文件夹中还可以按需要设置子文件夹!),所以在这里我在E盘建立一个myweb的文件夹. 首先来安装Windows 2000/XP自带的IIS作为服务器.在这里因为我的机器是XP所以所有截图都是XP下完成的. 控制面板-->>添加或删除程序. 然后是添加删除windows组件-选中IIS组件前面的勾,之后等待安装,

在Windows 2003下面调试ASP程序的常见错误以及解决方案

window|程序|错误|解决 由于工作原因,笔者经常需要使用Asp开发一些小型程序,在Windows 2000下开发和使用相关程序时一般不会出现什么问题,并且也很容易解决.但是由于笔者为了尝鲜使用了Windows 2003 Server时,开发相关程序就出现了这样那样的问题,比如浏览器不能显示详细出错信息,连接Access时总是报错等,让笔者苦不堪言.在多次实践和查看了一些参考资料之后,对处理相关的问题有了一些经验,现在终于可以在Windows 2003 Server 下面调试和使用相关的程序

VS.net调试ASP.NET运行项目出错:无法调试应用程序

asp.net|程序|项目 复制到 C:\Inetpub\wwwroot ,可以正常打开,却报告:试图运行项目时出错:无法在WEB服务器上启动调试.未将项目配置为调试. 点击帮助一看: 错误:未将项目配置为进行调试请参见 调试脚本和 Web:错误和疑难解答 尝试运行项目时出错:无法在 Web 服务器上开始调试.该项目没有配置为调试版. 调试 ASP.NET 项目 检查项目是否有有效的 Web.config 文件,Web.config 文件是否将"debug"设置为"true&

彻底放弃IIS让Apache也支持ASP.NET

apache|asp.net|iis Apache是目前广泛使用的一种网络服务器程序,不仅在UNIX/Linux平台上被大量使用,而且在Windows平台上也有许多站点放弃了IIS而转向Apache..NET是微软推出的功能强大的开发技术,其目标就是与Java抗衡.ASP.NET非常适合于中小企业的Web应用,其性能较ASP3.0有了极大的提高.下面就介绍让Apache支持ASP.NET的办法. 首先,必须要有Windows环境和.NET Framework的支持.此外还建议安装.NET开发工具

调试 ASP 脚本(转自IIS5.0文档)

iis|脚本   调试 ASP 脚本 无论是否有经验,您都可能会遇到程序错误,或叫"bug",这将影响服务器端脚本正常工作.因此,对于开发成功和强大的 ASP 应用程序,特别是当应用程序变得越来越复杂时,调试(即发现和改正脚本错误的过程)就显得极其重要了.Microsoft 脚本调试程序工具Microsoft 脚本调试程序工具是一个强大的调试工具,可以帮助您快速定位错误并可以交互式地测试服务器端脚本.使用脚本调试程序,也可以与 Windows Internet Explorer 3.0

用VS2003调试ASP的方法和体会

一直以来,和很多朋友一样,我调试ASP一般都是用editplus,当然,界面部分还是要用用什么frontpage之类的啦. 前段时间写.net项目,装了一个VS.net2003,最近要写一个asp的项目,后来想想用vs20003来试试吧. 打开VS2003,先新建立一个项目,选Visual Basic项目--空WEB项目,名字就叫webproject1,然后可以在资源管理器(是VS的不是windows的)里看到解决方案. 点项文件栏上的"项目",然后点"webproject1

使用InterDev调试ASP页面及用户自定义DLL

interdev|页面 最近一直在做ASP的项目,用来用去,觉得还是用Microsoft的InterDev开发起来比较方便.也许还有其它大家惯用的IDE,但是从使用InterDev以后,明显的降低了键盘上"r.e.s.p.o.n...w.r.i.t.d.m.g.b.x.a.l"等键的损耗程度,为什么?因为终于不用再写 response.write, msgbox, alert等调试语句了.也经常看到网上有人问起InterDev如何打开调试功能,调试的过程中出现的错误如何处理等等问题--

调试ASP.NET应用程序的方法和技巧

asp.net|程序|技巧 以前使用ASP开发过Web应用程序的人员肯定知道调试Web应用程序是多么麻烦.在ASP中,调试是痛苦的,通常包括了使用Response.Write()方法输出变量的值.那么请问一下自己:你有多少次忘记了在布署应用程序之前删除了调试语句? 随着.NET框架组件的出现这种情况发生了彻底的改变.在.NET中,你可以使用Visual Studio .NET中的调试程序跟踪整个Web应用程序的执行,或者使用System.Web.TraceContext名字空间中的Trace类.

如何调试ASP的环境

  如何调试ASP的环境: 学习目的:安装调试ASP的环境,并且调试第一个简单的程序. 因为我们学ASP的目的就是想建立一个网站,那么一般习惯是建立的网站内所有文件应该同时放到一个文件夹中(当然这个文件夹中还可以按需要设置子文件夹!),所以在这里我在E盘建立一个myweb的文件夹. 首先来安装Windows 2000/XP自带的IIS作为服务器.在这里因为我的机器是XP所以所有截图都是XP下完成的. 控制面板-->>添加或删除程序. 然后是添加删除windows组件-选中IIS组件前面的勾,之