我维护一个ASP.NET Web应用程序(.NET 3.5),它作为旧的“伞形”ASP网站的“插件”运行.
为了在做出一些改变后进行调试,我……
>构建webapp和
>加载“伞”网站
>这反过来将实例化IIS工作进程(即在其自己的应用程序池中与旧的ASP东西分开).
>然后我将我的VS2008调试器连接到该过程.
现在我已经转移到在IIS 7中托管所有这些,除非我在步骤1和2之间执行IIS重置,否则我无法让调试器达到断点.
解决方法
是一个新的流程真正由伞网站启动,还是只是寻找.net网站流程并找到它,只是使用它.我不认为IIS中必须拾取新部署的代码.必须更改某些文件(例如web.config)以使进程自行回收并获取更改,否则IIS将继续运行当前应用程序池进程中的代码.
我认为这就是IIS的工作方式 – 当您第一次浏览您的站点时,IIS会启动运行它的应用程序池,并且该站点运行并存在于内存中.它停止查看大多数物理文件,只是从内存中运行该站点.如果对代码库进行一些更改,IIS将不一定会接受这些更改.只有当您更改某些文件(如web.config)时,IIS才会回收应用程序池,从而获取您所做的更改.这导致IIS运行一组代码,而VS2008运行不同(更新)的代码.当代码不匹配时,您无法调试它.
我想你可能会添加到哪些文件被观看更改,但我不知道如何做到这一点.
您可以只回收应用程序池,而不是执行IISRESET.至少这对你来说会更快.