你的位置:睿鑫网络 >> 编程 >> web开发 >> ASP.NET >> 详细内容 在线投稿

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

排行榜 收藏 打印 发给朋友 举报 来源: 网络   发布者:未知
热度14票  浏览15次 时间:2010年1月15日 10:55

qo)EG*^0由于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文件配置)。

zR+_'N9vQ*}0 睿鑫网络0pc Qr.n,Ir^

首先,我们需要让这个被调试的项目在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的源代码级调试了。

]Xa L I0 睿鑫网络IF$h;]ozdtR

上面是对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完全脱离关系了。睿鑫网络:B-J HR*y;Z$x(@ CT

睿鑫网络k6D Fc r(Mr

睿鑫网络'A.n Hu.UA*Y G+y

睿鑫网络 X1mr[4C7l2j3n` c,^2`

图1睿鑫网络&eq#dcrca ~'O

n fd:?P{x0// 不管是1.1还是2.0,都需要确定到底是哪个Apache.exe进程是宿主睿鑫网络9u\2sfp

7A%ZFYV R,N:S m+~p Y0在Apache上调试失败的已知可能问题:

#~(E7B S8N6r(\$b#LF4U0

x-g\6KC\L~`01、没有使用debug版的项目dll来运行,这个...还是问题吗?睿鑫网络5IMm(t%rZ

睿鑫网络/N`BQ9d)\4w"pi

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版本。睿鑫网络#_"_q*L r&A%\?~%W,Sy

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

W+iF3hy0 睿鑫网络 Wnn?h

Created ASP.NET Project by VS.NET 2003 Command#region睿鑫网络M`'Re!m

sD`2R{ Er6P*K0Created ASP.NET Project by VS.NET 2003 Command

6x[yF(d%r;^~r0

5r6KA0Q+O*Gxg0GET localhost/DebugDemo/get_aspx_ver.aspx

Z(~| _*\REDw'_0 睿鑫网络&e&g)o3vSs

500 Internal Server Error

Ll7|`9a!xUj0A%b0

-K {5o n/D!@ {xI0GET localhost/get_aspx_ver.aspx睿鑫网络1D;~,^kU%Xm;l4\L

睿鑫网络A%[&U:Jxy |-q$?

404 Not Found

$K t*r-Z*^6j0

?)j)x*@H2F ~;e0GET localhost/DebugDemo/vs28758389629759149_tmp.htm睿鑫网络3R'?lN1J5W@

睿鑫网络 Llarvv^V

200 OK睿鑫网络A5ex s:D7k m

,Vv Ga J6I0POST localhost/DebugDemo/_vti_bin/_vti_aut/author.dll

Y1r0\%g^6cV ]W0

j8rJ)uIH4xu7@0100 Continue

z m C X6X RK.K0 睿鑫网络@;qw)D[!~j5c#\

401 Access denied睿鑫网络${*T4]\3jw cN,j

/]l0iD E-`kF[ c,I)z0POST localhost/DebugDemo/_vti_bin/_vti_aut/author.dll睿鑫网络:XU"lL7n c(T

睿鑫网络:g N'G1` Q Ze

401 Access Denied睿鑫网络2i;f3C;a2I

*`A5a-D4|J3B Bk0POST localhost/DebugDemo/_vti_bin/_vti_aut/author.dll睿鑫网络h|"N"G!A

睿鑫网络{x?r!ji f h

100 Continue睿鑫网络*N9`h;c(f

9ii?G P%B0200 OK

8_!v7XYAbg5K0

Bw5aN%z9_t/p0POST localhost/_vti_bin/_vti_aut/author.dll睿鑫网络*IZtkQ

&L4ib/x5e&E+q}d0100 Continue睿鑫网络%N TgJO0}L] B

睿鑫网络2V,A"B9|z5D6V

401 Access denied睿鑫网络-? tH*fl%Q-L

睿鑫网络Jl"W8N"Q.}LOL|

POST localhost/_vti_bin/_vti_aut/author.dll睿鑫网络s"Ta!k$|#z n

睿鑫网络Jx |X&DN,B"{ o`

401 Access Denied睿鑫网络'b3]%^ws'~{}n;M

睿鑫网络i8de?N2l

POST localhost/_vti_bin/_vti_aut/author.dll

.F5Cv*T$U+`0

Um k+L.R7Z0100 Continue睿鑫网络7SJNKn D

D,xl;tJ$Ec0200 OK

;pZ#`"jIik1j%H0 睿鑫网络g8f[5p`gy:Ow

POST localhost/_vti_bin/_vti_adm/admin.dll睿鑫网络EkQda8e

睿鑫网络k!{f_2Y;C'`Bc0i

100 Continue

}Cn\4v(L0

GN6l u1?*q'c0401 Access denied睿鑫网络'c*ZU+n%X-v8D&m/N

睿鑫网络8IU/S#nwW3b

POST localhost/_vti_bin/_vti_adm/admin.dll

)tG]{AN0 睿鑫网络-[.{@Sv3z+n$b

401 Access Denied睿鑫网络5teS*E(l}]G_1R

f(`b(kO!mPH-I0POST localhost/_vti_bin/_vti_adm/admin.dll

Hd6RS8Jb3mxw(o0 睿鑫网络t A Dt0L

100 Continue睿鑫网络 zBe|g Y(Hk

睿鑫网络o O)?1M$r:J

200 OK睿鑫网络B-u&N g7d(C6^X

睿鑫网络{dZ2R_M6D"fC?

POST localhost/DebugDemo/_vti_bin/_vti_aut/author.dll睿鑫网络 SlBN7Kt A6t Y

睿鑫网络*|iaPo2l8LBl

401 Access Denied

Wm&J V;~5_0

l+{%x:q$Q9q0POST localhost/DebugDemo/_vti_bin/_vti_aut/author.dll

/\&H8?m$I)pW1U(_0 睿鑫网络ui KT6L T@ZG XR

100 Continue

'U fxT!]0 睿鑫网络 H$w7q2O8QA

200 OK

R-w@%}t{%jg6m@0 睿鑫网络ep bV-BR

POST localhost/DebugDemo/_vti_bin/_vti_aut/author.dll睿鑫网络E'z o\5N,h]

9tY&Jd:Nl0#endregion

K3} kb#]s7j:FF0 睿鑫网络6M ?0Npm,h"y%qDEY

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

[ Ns[Q!|:o3H9S0
顶:1 踩:1
对本文中的事件或人物打分:
当前平均分:1 (7次打分)
对本篇资讯内容的质量打分:
当前平均分:-1 (2次打分)
上一篇 下一篇

网络资源