C# Can';t进入global.asax/Application\u启动
我在C# Can';t进入global.asax/Application\u启动,c#,asp.net-mvc-3,visual-studio-2010,visual-studio-debugging,C#,Asp.net Mvc 3,Visual Studio 2010,Visual Studio Debugging,我在应用程序\u Start()的第一行有一个断点,但Visual Studio不会在它上面中断 Visual Studio已将自身连接到IIS工作进程: 自动附加到计算机“SRD00510”上的进程“[2092]w3wp.exe”成功 主控制器中的断点可以正常工作 更新 我试过: iisreset 重新启动visual studio 重新启动 试图重新安装aspnet(aspnet\u regais-i) 应用程序启动()仅在应用程序启动时运行一次。重新启动应用程序的几件事是: web.c
应用程序\u Start()
的第一行有一个断点,但Visual Studio不会在它上面中断
Visual Studio已将自身连接到IIS工作进程:
自动附加到计算机“SRD00510”上的进程“[2092]w3wp.exe”成功
主控制器中的断点可以正常工作
更新
我试过:
iisreset
- 重新启动visual studio
- 重新启动李>
- 试图重新安装aspnet(
)aspnet\u regais-i
应用程序启动()
仅在应用程序启动时运行一次。重新启动应用程序的几件事是:
- web.config更改
- 回收工作进程-您可以在IIS管理器中或通过在命令行上运行
来执行此操作iisreset
这将为您提供一个对话框,允许您选择调试器。您可能需要重新启动应用程序池。我假设您是通过单击Visual Studio中的“调试”按钮来加载应用程序的?这就是我正在做的(VS 2012)并且看到了类似的问题。第一次按下该按钮启动应用程序并正确命中断点。但似乎在我停止调试后,应用程序本身继续运行。因此,将来的调试尝试只会附加到现有进程。
在“停止调试”按钮旁边有一个“重启”按钮,所以我认为点击它至少会改变一些事情。 调试应用程序未显示在IIS管理器中,因此我无法在那里停止它。同样,iisreset也没有捕捉到它 到目前为止,我唯一知道的事情是更改一行代码,从而迫使VisualStudio触发一个构建,然后它终止现有的进程并重新开始。如果我只想在那里多走几次,那就有点烦人了
我不认为这是一个合适的“答案”,但它可能是一个有用的解决方案,直到有人真正的答案进来。
< P>我的解决方案是切换到使用“VisualStudio Development Server”来处理应用程序类(Global,Asax)问题。完成后,我切换回IIS。我以前通过以下操作解决了此问题:现在打开您的解决方案并试一试。(祝你好运:)每当你第一次运行一个应用程序,或者说启动一个应用程序,就会有一个ASP.Net开发服务器端口[端口号]启动
应用程序\u Start()
在应用程序运行过程中运行一次
如果要达到断点,必须停止ASP.Net Development Server端口并再次运行应用程序。阅读您的问题,我假设您使用IIS进行调试,而不是Visual Studio Development Server 在这种情况下,调试应用程序启动是很棘手的,因为只有在启动或回收应用程序池时才会调用它一次。当VisualStudio附加到进程时,应用程序_Start已在运行 诀窍是使应用程序池循环使用,而不会终止所连接的进程 请执行以下操作:
这对我适用(IIS 7.5,VS2015)。如果[2092]w3wp.exe是您提供的服务,请尝试以下操作:
停止服务->重建服务项目->启动重建服务->尝试调试如果使用IISEXPRESS不是一个选项,正如@David Perlman提到的,我会选择一个记录器。Log4Net或NLog都很好。在长期运行中有一个记录器是很好的,例如在生产环境中
namespace DataService
{
using NLog;
public class Global : System.Web.HttpApplication
{
private Logger log;
protected void Application_Start(object sender, EventArgs e)
{
LogManager.LoadConfiguration("nlog.config");
log = LogManager.GetCurrentClassLogger();
log.Error($"Read this line in the log specified in nlog.config");
}
我用任务管理器杀死了w3wp,并试图更改web.config。这很奇怪。。。如果您已连接,则更改web.config即可。您确定正在执行断点处的代码吗?你能把它移到
应用程序的开始吗\u start()
?这会给我一个新的visual studio实例。通常,你会得到一个“选择器”表单来选择一个新的VS或当前正在运行的VS。你看不到吗?是的,但我只能选择一个新的visual studio实例。在某些情况下,它会列出当前正在运行的visual studio实例,并允许您选择该实例,而在其他情况下,您需要启动新实例。无论哪种方式,都可以使用此方法进行调试。如果要使用已打开的Visual Studio实例,请不要在该实例中使用“启动调试”。相反,使用浏览器来调用你的应用程序。然后,您应该能够使用现有实例。尝试右键单击proj。调试>进入新实例。通过这种方式,你可以从一开始就看到发生了什么。在第2步和第3步之间稍加修改后,这种方法仍然有效。更改web.config会强制您停止调试,但您可以重新连接到p
namespace DataService
{
using NLog;
public class Global : System.Web.HttpApplication
{
private Logger log;
protected void Application_Start(object sender, EventArgs e)
{
LogManager.LoadConfiguration("nlog.config");
log = LogManager.GetCurrentClassLogger();
log.Error($"Read this line in the log specified in nlog.config");
}