Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 调试本地IIS Web服务器上托管的ASP.NET MVC3应用程序_C#_Asp.net_Asp.net Mvc_Iis_Azure - Fatal编程技术网

C# 调试本地IIS Web服务器上托管的ASP.NET MVC3应用程序

C# 调试本地IIS Web服务器上托管的ASP.NET MVC3应用程序,c#,asp.net,asp.net-mvc,iis,azure,C#,Asp.net,Asp.net Mvc,Iis,Azure,我已经设法使用本地IIS Web服务器来托管我的MVC3应用程序,我可以从托管它的机器上调试它和所有东西。-但是,当我从另一台机器(我的Mac,它在Parallels VM中运行我的Windows)发送请求时,我得到了预期的结果,但是调试器不会在我的断点处停止 我尝试添加一个调试器.Break()到我的操作,这会使w3wp.exe崩溃 总之:本地请求正在工作,可以调试。外部请求正在工作,但无法调试。 在我的项目属性中,我设置了使用本地IIS Web服务器,使用IIS Express未选中 我正在

我已经设法使用本地IIS Web服务器来托管我的MVC3应用程序,我可以从托管它的机器上调试它和所有东西。-但是,当我从另一台机器(我的Mac,它在Parallels VM中运行我的Windows)发送请求时,我得到了预期的结果,但是调试器不会在我的断点处停止

我尝试添加一个
调试器.Break()到我的操作,这会使w3wp.exe崩溃

总之:本地请求正在工作,可以调试。外部请求正在工作,但无法调试。

在我的项目属性中,我设置了
使用本地IIS Web服务器
使用IIS Express
未选中


我正在使用Visual Studio 2012 Professional。该项目基于Azure SDK,附加的进程是WaIISHost.exe。

启动Visual Studio时,以管理员身份启动它(右键单击并“以管理员身份运行”),然后加载项目的解决方案

然后从“调试”菜单中选择“附加到进程…”,并确保选中“从所有用户显示进程”和“在所有会话中显示进程”复选框,在“可用进程”面板中,您应该能够滚动并找到与您尝试调试的IIS应用程序池相关的进程(通常称为w3wp.exe)

附加到此进程并刷新浏览器中的页面,这将允许您进行调试

非常感谢


Benjamin

我可以看到,远程请求由IIS提供服务,而本地请求则通过“Cassini”服务器或visual studio服务器提供服务

确保您正在使用IIS调试代码,您可以将visual studio附加到w3wp.exe以通过IIS进行调试。并且您应该以管理员身份启动visual studio

将Visual studio附加到w3wp.exe(IIS进程):从Visual studio的“调试”菜单中选择“附加到进程…”:

  • 选中“显示来自所有用户的流程”

  • 选中“在所有会话中显示进程”

  • 按选择按钮,从(附加到)中选择“托管(v…)代码”

  • 按“刷新”按钮

应该显示w3wp.exe


您可能连接了错误的进程

尝试执行以下操作以确认调试的进程错误

  • 从本地计算机以调试模式启动web应用程序(按F5)
  • 继续调试-->附加进程

现在,如果向下滚动,您将看到VS为调试应用程序而附加的进程(它将以不同的颜色显示-浅灰色)。如果进程不是
w3wp.exe
,则表示您没有使用IIS托管应用程序,并且当您从另一台计算机发出请求时,您可能调试了错误的进程

问题在于,由于我已将IIS服务器设置为在端口83上运行,而在本地我将在端口81上访问,因此调试器不会运行监视这些请求

为了解决这个问题(或者,通常是在Cassini Web服务器上进行远程调试),下载一个名为的工具,这是一个非常简单的流量重定向程序守护程序,并在您将其解压缩到的文件夹中创建config.cfg。格式为
。因此,在我的Mac上,我在Safari中找到了这个地址:192.168.1.23:8080/Controller/Action,然后将其重定向到localhost:81/Controller/Action,就像它是本地请求一样下面是config.cfg的示例:

192.168.1.23 8080 127.0.0.1 81
或者,您可以使用PC名称,以避免在DHCP为您提供新地址时必须分配静态IP或更改配置:

Jeff-PC 8080 127.0.0.1 81
然后,打开命令提示符,将
cd
放入您的rinetd文件夹,然后运行
rinetd.exe-c config.cfg


工作起来很有魅力。

我的进程列表中没有w3wp.exe:OI进程列表中没有w3wp.exe-我始终以管理员身份运行我没有“在所有会话中显示进程”功能选项我没有这个选项-可能是因为我的Windows计算机上只有一个帐户?顺便说一句,如果我使用Azure云服务,它会改变吗?我找到了它,并发布了我的答案。发送请求的计算机是A。托管服务器的计算机是B。你的visual studio实例正在B上运行,对吗?如果是,那么你可以进程列表中应该有w3wp.exe。是的,这是正确的-但是w3wp没有显示,即使在使用F5启动调试会话后执行请求时也是如此。灰色的是waiShist.exe,这意味着您现在没有使用IIS进行调试!!…但是,它说的是IIS?我在项目属性中设置了它,如果我没有使用IIS,我将无法进行调试执行外部请求。这意味着应用程序不在IIS下托管。您是否在本地计算机上使用Azure SDK?无论如何,在从另一台计算机调用web应用程序之前,请尝试手动附加此进程。是的,Azure SDK!我无法附加到waiHost.exe,因为我按F5时它已附加。太棒了!非常感谢您或者发布这篇文章!我刚刚给了rinetd一次尝试,它工作得非常好。这为测试应用程序提供了很大的灵活性,从我的智能手机(drum roll)通过wifi连接到我本地网络上的开发箱上的VS用完的站点。现在这很酷。