我经常(每隔几天左右)将我的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认为我需要它?
答案 0 :(得分:7)
这是一个.NET 2.0“功能”
http://weblogs.asp.net/scottgu/archive/2005/10/06/426755.aspx
http://www.codeproject.com/KB/aspnet/app_offline.aspx
“解决这个问题的最简单方法是永远不要直接发布到您的服务器。不管怎么说,你不应该...... 发布到本地文件夹然后复制该网站“
您使用Visual Studio吗? http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=102778
答案 1 :(得分:4)
默认情况下,发布进程会在目标目录中放置一个,但在发布过程完成后将其删除。也许它在尝试时被阻止删除它?
以下摘自MSDN文章here:
在复制应用程序文件之前,“复制网站”工具会将名为App_offline.htm的文件放入目标网站的根目录中。当App_offline.htm文件存在时,对网站的任何请求都将重定向到此文件。该文件显示一条友好消息,告知客户端网站正在更新。复制完所有网站文件后,“复制网站”工具将从目标网站删除App_offline.htm文件。
我猜这个由于某种原因,有两个发布事件彼此冲突?
我解决这个问题的方法是使用nant来构建我的解决方案然后复制我想要的东西。我确实首先使用该功能复制app_offline文件,但是我会在复制和删除它时进行管理。
答案 2 :(得分:0)
如果数据库不支持多个进程(SQL Server 2005 Express Edition或Access)。一次只能有一个进程访问数据库。因此,当通过Visual Studio访问数据库时,ASP.net运行时无法访问该数据库。这将导致内部服务器错误。为防止这种情况,VS 2005将app_offline.htm文件放在应用程序的根目录中。该文件包含以上消息。这将导致ASP.net将应用程序置于脱机模式。请注意,访问数据库意味着将数据库的任何组件(即表,视图,存储过程等)打开到设计窗口中。关闭设计窗口后,VS 2005或VS 2008会删除app_offline.htm文件,从而使应用程序再次处于联机模式。
Found it here...