2017-01-19 47 views
1

我有一个.NET应用程序,它是服务器框架,它托管在IIS中,它在IIS启动时启动。如何调试在应用程序启动时执行的代码,如果应用程序驻留在IIS中并在IIS启动时启动?

调试我通过Visual Studio连接到客户端进程的框架。它适用于正常的调试,但是现在我想在框架从xml文件加载它的配置(它由C#代码处理)时调试节。它只在应用程序启动时执行一次,与IIS启动的时间完全相同。附加我的解决方案时,我的速度不及IIS。

如果我将框架附加到客户端进程,则重置IIS将调试器分离。

如何处理这样的问题?

糟糕的解决方案:唯一可行的方法是在应用程序的开头放置一个非常长的Thread.Sleep,然后快速连接。

+0

你是什么意思“重置IIS”?如果您只是回收应用程序池,调试器是否会分离? – Crowcoder

+0

@Crowcoder是的。如果您转到右上角的IIS GUI,则会出现RESTART按钮。 – Yoda

+0

这与回收应用程序池不同。 – Crowcoder

回答

1

尝试将项目更改为使用“IIS Express”而不是本地IIS - 然后启动应用程序时,Visual Studio也将启动IIS Express,并且调试器已连接到该服务。

您可以通过右键单击项目来更改设置=>选择属性=>单击Web选项卡=>在组合框的“服务器”下找到IIS Express。

+0

好吧,你知道我可以如何选择我想使用的IIS吗(我明天可以使用代码和工具访问机器),但我认为这也许是一些标准的技巧。客户端应用程序也运行在与框架相同的IIS上。 – Yoda

+0

在我的原始评论中,我写了如何配置服务器以使用IIS Express。当你这样做的时候,它会揭示服务器的新url(很可能是localhost和一个随机的端口号,如下所示:http:// localhost:1236) - 你只需将你的客户端指向这个url,它应该可以工作,假设它在同一台机器上) – lmms90

+0

@Yoda,这个问题呢?你能从lmms90的建议中获得有用的信息吗? –

2

添加

System.Diagnostics.Debugger.Launch(); 

Application_Start。您会看到一个弹出窗口,询问您是否要调试网站,并且如果单击确定,您将以调试模式进入Visual Studio,并暂停在该行。

相关问题