我经常(每隔几天左右)将我的ASP.NET Web项目发布到本地Web服务器.
但最奇怪的事情一直在发生......一个名为"app_offline.htm"的文件在我的网络项目中不断出现!
我已多次删除此文件,它不在源代码管理中,而AFAIK没有其他人正在篡改该项目.但实际上每次我尝试发布项目时,我的发布都会失败(Unable to add 'app_offline.htm' to the Web site. The file 'app_offline.htm' already exists in this Web site.Error: The operation could not be completed. Unspecified error),我回过头来看看这个项目,然后它再次变得像生命一样大,我怀疑它是否可能会给我带来覆盆子.:p
阅读了一些关于这个文件的内容后,我认为这是让您的应用离线的简单方法.但我没有看到任何地方,它应该没有任何理由任意强加给你.
那么,这是*&^%$#@%!! 文件来自,为什么VS认为我需要它?
我有一个解决方案,在Visual Studio 2008 SP1,.NET Framework 3.5 SP1中有2个项目.
我有一个从网站到类库的引用,因为类库是我的数据层.但无论如何,事情只发生在这个基本设置,这两种类型的项目的解决方案和从网站到类库的引用.
现在,每次我修改类库中的内容并构建它时,Visual Studio都会创建一个名为app_offline.htm的文件,然后删除它(它将它发送到回收站).
这真的很烦人,因为在一天结束时我最终得到了一个完整的回收站和我,作为完美主义者,我想保持它清洁.我不是唯一有这个问题的人:这里和这里.
我现在知道问题的原因,但仍然不知道如何修复它.如果您之前没有听说过app_offline.htm,请参阅ScottGu关于app_offline 的文章.
有谁知道这个问题的解决方案?VS中的一些设置是在Build过程后永久删除文件?(我真的不想设置我的回收站来做那件事,因为我不时无意中删除了一些东西,我希望能够恢复它们.)
我们收到一个问题,即每次我们将dll复制到bin目录时,我们在网站上的主域都会停止运行,恢复它的唯一方法就是重新启动"WWW Publishing Service".
我们运行一个网站,其中包含许多运行在单个服务器上的IIS应用程序,其中每个应用程序都配置为运行不同的应用程序池.
我们有一个庞大的代码库,在整个网站上包含超过280个aspx页面.我们的主域包含大约100个aspx页面,而子域包含15或20个.
当我们进行构建时,我们正在生成一堆dll,我们手动将其复制到生产服务器bin目录中.一旦我们这样做,IIS显然会启动回收编译每个aspx页面和代码隐藏的回收.此时,该站点基本上停止了(有时需要重新启动 - 通过重新启动Web发布服务 - 再次唤醒它).
奇怪的是,这只发生在我们部署到主域IIS应用程序时,即www.如果我们以相同的方式将bin文件部署到子域,它几乎可以立即工作.
即使我执行iisreset.exe,这似乎也无法解决问题.
几个问题:
一些规格:
任何援助将不胜感激.提前致谢.
开发平台:VS 2013,MVC 5,IIS Express 7.5.
问题:当我动态编辑javascript并点击F5刷新屏幕时,IIS Express无缘无故地回收应用程序池.因为我在应用程序启动期间加载了一些程序集,这会导致错误:
该进程无法访问文件'C:\ Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\34d1a25b\a6535eb1\Module1.dll',因为它正由另一个进程使用.
这是合乎逻辑的.但是为什么IIS Express会回收应用程序池?
我试图根据Scott Gu的帖子追查原因,但错误是观众又是胡说八道:
无法找到源.NET Runtime中的事件ID 0的说明.引发此事件的组件未安装在本地计算机上,或者安装已损坏.您可以在本地计算机上安装或修复该组件.
如果事件源自另一台计算机,则必须随事件一起保存显示信息.
事件中包含以下信息:_shutDownMessage = App_Offline.htm中的更改HostingEnvironment已启动关闭App_Offline.htm中的更改HostingEnvironment导致关闭App_Offline.htm中的更改
_shutDownStack =在System.Environment.get_StackTrace()的System.Environment.GetStackTrace(Exception e,Boolean needFileInfo)... System.Threading.ThreadPoolWaitCallback.PerformWaitCallback()上的System.Threading.ThreadPoolWorkQueue.Dispatch()
消息资源存在但在字符串/消息表中找不到该消息
对我来说唯一能说的就是
_shutDownMessage = App_Offline.htm中的更改HostingEnvironment启动关闭App_Offline.htm中的更改
这里也有类似的问题在计算器像这样与此解决方法和可能的答案在这里,但我还是不明白这一点-是谁负责这一点,最主要的原因是什么?或者不同的案例有不同的原因?