我正在使用VS2013 Premium将网站发布到Windows Server 2012.

SqlServerTypes\x64\SqlServerSpatial110.动态链接库

SqlServerTypes\x86\msvcr100.动态链接库

SqlServerTypes\x86\SqlServerSpatial110.动态链接库

我试图发布的上述每个文件都会出现这种错误:

相互关联的是,这些文件是第一次发布的(当它们不在服务器上时),然后它们就不再被覆盖.try 了两个不同的web服务器.

...但它只成功地使网站离线(VS正在使app_offline.htm离线),但发布仍然失败,并出现相同的错误.

有什么 idea 吗?

推荐答案

你可以在发布过程中让你的应用程序离线,这有望释放文件上的锁,并允许你更新它.

我不久前go 过blogged about this家.概述的支持在Azure SDK和Visual Studio更新中提供.我不记得确切的版本,但如果需要的话我可以找到.在那篇博文前后的任何更新都可以.

前提条件:

  • VS 2012+VS更新/VS 2013+VS更新/VS2015
  • MSDeploy v3

Note: if you are publishing from a CI server the CI server will need the updates above as well

编辑发布配置文件

在VS中,当创建Web发布配置文件时,对话框中的设置在Properties\PublishProfiles\中存储为以.pubxml结尾的文件.Note: there is also a 101 file, that file should not be modified

要使应用程序在.pubxml文件中脱机,请添加以下属性.

<EnableMSDeployAppOffline>true</EnableMSDeployAppOffline>

注意事项

ASP.净需求

在MSDeploy端实现这一点的方式是,应用程序离线.htm文件被放置在网站/应用程序的根目录中.从那里开始asp.net运行时将检测到这一点,并使您的应用程序脱机.因此,如果你的网站/应用程序没有asp.net启用此功能将不起作用.

可能不起作用的 case

这一点的实现使得应用程序在发布开始之前可能不会严格地处于离线状态.首先删除app_offline.htm文件,然后MSDeploy将开始发布文件.它不会等待ASP.NET检测到文件并使其真正脱机.因此,您可能会遇到仍然遇到文件锁定的情况.默认情况下,VS会启用重试,因此通常情况下,应用程序会在其中一次重试期间离线,一切正常.在某些情况下,ASP.NET可能需要更长时间才能做出响应.这就有点棘手了.

如果你添加了<EnableMSDeployAppOffline>true</EnableMSDeployAppOffline>个应用程序,但你的应用程序并没有很快离线,那么我建议你在发布开始之前将应用程序离线.远程执行此操作有几种方法,但这取决于您的设置.如果您只有MSDeploy访问权限,可以try 以下顺序:

  1. 使用msdeploy.exe通过删除app_offline.htm使您的站点离线
  2. 使用msdeploy.exe发布你的应用程序(确保同步不会删除app_offline.htm文件)
  3. 等一段时间
  4. 发布网站
  5. 使用msdeploy.exe通过删除app_offline使应用程序联机.htm

我在博客上写过你如何在http://sedodream.com/2012/01/08/howtotakeyourwebappofflineduringpublishing.aspx岁时做到这一点.这篇博文中唯一缺少的是等待网站真正离线的延迟.您还可以创建一个只直接调用msdeploy.exe的脚本,而不是将其集成到项目构建/发布过程中.

Asp.net相关问答推荐

分层架构中的 ASP.NET 和实体框架 - 仅将实体框架用于 ORM

在每个对象上设置 ClientIDMode = Static 是否有任何缺点(在母版页的 maincontent 上设置)

将 Global.asax 迁移到 Startup.cs

未知的网络方法.参数名称:methodName

文本框的输入按键触发事件

在 Blazor 中 Select 框绑定

使用 Visual Studio 2012 恢复删除的文件

AddDefaultTokenProviders:它是什么以及如何使用那些默认提供者?

如何在 ASP.NET MVC3 中配置区域

判断邮箱地址是否对 System.Net.Mail.MailAddress 有效

是否可以在 web.config 中添加响应 http 标头?

如何在asp.net中获取应用程序路径?

在asp.net mvc 3中实现FilterAttribute,IActionFilter和从ActionFilterAttribute继承有什么区别?

将 Http 请求读入字节数组

ASP.NET MVC 路由的无限 URL 参数

压力测试 ASP.Net 应用程序

验证请求事件

使用 ConfigurationManager.RefreshSection 重新加载配置而不重新启动应用程序

ModalPopupExtender OK 按钮单击事件未触发?

强制 IIS Express 进入classic 管道模式