在Apache上调试Asp.net 1.1/2.0代码-阿里云开发者社区

开发者社区> 唐玄奘> 正文

在Apache上调试Asp.net 1.1/2.0代码

简介:
+关注继续查看
我们知道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进程emdgust.gif。这里我也不知道应该是哪个,虽然它们的类型都是".NET, Win32",不过只有一个是mod_aspdotnet的宿主进程。当然我们还是可以用个小trick来判断,就是打开taskmgr并刷新Apache上运行的Web站点的页面,看那个Apache.exe进程占用CPU,那么它就是asp.net支持模块的宿主emsmilep.gif。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完全脱离关系了emteeth.gif

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

    在Apache上调试失败的已知可能问题:
    1、没有使用debug版的项目dll来运行,这个。。。还是问题吗emembarrassed.gif
    2、第二种情况,如果不注意,可能会认为是Apache不能调试1.1的Asp.net。就是如果机器上同时装了Fx1.1和Fx2.0,mod_aspdotnet会默认把我们的ASP.NET程序加载在Fx2.0上运行,这时如果用VS.NET 2003去调试将无法Attach任何Apache.exe进程hitwall.gif。当然用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操作,创建一些项目必须文件在服务器上,具体步骤如下: 
ContractedBlock.gifExpandedBlockStart.gifCreated ASP.NET Project by VS.NET 2003 Command#region Created ASP.NET Project by VS.NET 2003 Command
InBlock.gifGET localhost/DebugDemo/get_aspx_ver.aspx
InBlock.gif500 Internal Server Error
InBlock.gifGET localhost/get_aspx_ver.aspx
InBlock.gif404 Not Found
InBlock.gifGET localhost/DebugDemo/vs28758389629759149_tmp.htm
InBlock.gif200 OK
InBlock.gifPOST localhost/DebugDemo/_vti_bin/_vti_aut/author.dll
InBlock.gif100 Continue
InBlock.gif401 Access denied
InBlock.gifPOST localhost/DebugDemo/_vti_bin/_vti_aut/author.dll
InBlock.gif401 Access Denied
InBlock.gifPOST localhost/DebugDemo/_vti_bin/_vti_aut/author.dll
InBlock.gif100 Continue
InBlock.gif200 OK
InBlock.gifPOST localhost/_vti_bin/_vti_aut/author.dll
InBlock.gif100 Continue
InBlock.gif401 Access denied
InBlock.gifPOST localhost/_vti_bin/_vti_aut/author.dll
InBlock.gif401 Access Denied
InBlock.gifPOST localhost/_vti_bin/_vti_aut/author.dll
InBlock.gif100 Continue
InBlock.gif200 OK
InBlock.gifPOST localhost/_vti_bin/_vti_adm/admin.dll
InBlock.gif100 Continue
InBlock.gif401 Access denied
InBlock.gifPOST localhost/_vti_bin/_vti_adm/admin.dll
InBlock.gif401 Access Denied
InBlock.gifPOST localhost/_vti_bin/_vti_adm/admin.dll
InBlock.gif100 Continue
InBlock.gif200 OK
InBlock.gifPOST localhost/DebugDemo/_vti_bin/_vti_aut/author.dll
InBlock.gif401 Access Denied
InBlock.gifPOST localhost/DebugDemo/_vti_bin/_vti_aut/author.dll
InBlock.gif100 Continue
InBlock.gif200 OK
InBlock.gifPOST localhost/DebugDemo/_vti_bin/_vti_aut/author.dll
ExpandedBlockEnd.gif#endregion

    同样在ASP.NET 2.0中,这个步骤完全不需要了,ASP.NET项目就是一个目录,完全的和Web Server脱离开了。我们也就再也不用因为IIS的捣乱,而使的不能开发ASP.NET程序了~~~


本文转自博客园鸟食轩的博客,原文链接:http://www.cnblogs.com/birdshome/,如需转载请自行联系原博主。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
asp.net常用javascript封装代码
using System;using System.Text;using System.Data;using System.Configuration;using System.Web;using System.
817 0
动态执行 VB.NET 和 C# 代码
原文:动态执行 VB.NET 和 C# 代码 有时候我们需要尝试动态地与一些代码进行交互,而不是只能执行程序内已编死的代码,那该怎么办呢?我首先推荐各种脚本语言,如Javascript、Lua、Python等等,这些脚本语言有很多优秀的第三方类库,可以很方便的与 .NET 系统集成,让我们的程序中执行动态代码。
1072 0
Apache Dubbo 被曝出“高危”远程代码执行漏洞
6 月 23 日,360 网络安全响应中心(360CERT)发布《CVE-2020-1948:Apache Dubbo 远程代码执行漏洞通告》(以下简称《通告》)。《通告》称,Apache Dubbo 存在远程代码执行漏洞,受影响的版本有 Dubbo 2.5.x、Dubbo 2.6.0 - 2.6.7 和 Dubbo 2.7.0 - 2.7.6。
703 0
一句代“.NET技术”码实现批量数据绑定[上篇]
  对于一个以数据处理为主的应用中的UI层,我们往往需要编写相当多的代码去实现数据绑定。如果界面上的控件和作为数据源的实体类型之间存储某种约定的映射关系,我们就可以实现批量的数据绑定。为了验证这种想法,我写了一个小小的组件。
592 0
竞彩足球混合过关赔率API调用示例代码
<?php// +----------------------------------------------------------------------// | 竞彩足球混合过关赔率API调用示例代码 - 麦趣数据// | 在线接口文档:http://www.
3367 0
RSS简易阅读器vb.net源代码
上次发了一个自己写的RSS阅读器的源代码http://www.cnblogs.com/aowind/archive/2005/03/16/119838.html这次打包发上来了上面还有用到的那个WEB浏览控件的COM组件http://files.
591 0
Asp.net MVC 2.0 + Unity 2.0(IoC) + EF4.0 实例:RoRoWoBlog 开源项目框架代码
本开源项目当前使用框架如下: 前台表现:Asp.net MVC 2 数据持久层:ADO.Net Entity Framework 4.0 依赖注入容器:Unity 2.0 开发工具:VS2010   开源项目地址:http://rorowo.
936 0
将图像转成HTML文件,VB.net源代码
上次发过一个软件,见下文http://www.cnblogs.com/aowind/archive/2005/03/05/113429.html其软件的功能就是将一个图像转成HTML文件,就是用一些自定义的数字通过不同的色彩来表现出这个图像其效果如下:经过小弟研究了一下,在vb.
667 0
+关注
641
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载