10

我定期(每隔几天左右)将我的 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认为我需要它?

4

3 回答 3

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

于 2010-01-27T16:01:25.640 回答
5

默认情况下,发布过程会在您的目标目录中放置一个,然后在发布过程完成后将其删除。也许它在尝试删除它时被阻止?

这是 MSDN 文章的摘录:

在复制应用程序文件之前,复制网站工具将一个名为 App_offline.htm 的文件放入目标网站的根目录中。当 App_offline.htm 文件存在时,对网站的任何请求都会重定向到该文件。该文件显示一条友好的消息,告诉客户网站正在更新。复制完所有网站文件后,复制网站工具会从目标网站中删除 App_offline.htm 文件。

我猜出于某种原因,有两个发布事件以某种方式相互冲突?

我解决这个问题的方法是使用 nant 来构建我的解决方案,然后只复制我想要的东西。我确实首先使用该功能复制了 app_offline 文件,但是当它被复制和删除时我会进行管理。

于 2010-01-27T15:35:00.933 回答
1

如果数据库不支持多进程(Exp. SQL Server 2005 express edition 或 Access)。一次只有一个进程可以访问数据库。所以当通过 Visual Studio 访问数据库时,ASP.net 运行时无法访问该数据库。这将导致内部服务器错误。为了防止这种情况,VS 2005 将 app_offline.htm 文件放在应用程序的根目录中。该文件包含上述消息。这会导致 ASP.net 将应用程序置于脱机模式。请注意,访问数据库意味着将数据库的任何组件(即表、视图、存储过程等)打开到设计窗口中。当设计窗口关闭时,VS 2005 或 VS 2008 会删除 app_offline.htm 文件,使应用程序再次处于在线模式。

在这里找到...

于 2019-02-14T09:40:47.690 回答