什么是 "AppOffline" 阻止我的机器人应用程序发布到 IIS Web 服务器?

What is "AppOffline" which prevents my bot application from getting published to the IIS web server?

刚刚使用 Bot 框架从此处下载的模板创建了一个应用程序:http://aka.ms/bf-bc-vstemplate

在测试模拟器中运行良好。但是当发布到IIS服务器时,我得到了这个错误:

Error Web deployment task failed. ((5/6/2016 3:03:54 PM) An error occurred when the request was processed on the remote computer.)

(5/6/2016 3:03:54 PM) An error occurred when the request was processed on the remote computer.
Exception has been thrown by the target of an invocation.
   at System.RuntimeMethodHandle._SerializationInvoke(Object target, SignatureStruct& declaringTypeSig, SerializationInfo info, StreamingContext context)
   at System.Runtime.Serialization.ObjectManager.CompleteISerializableObject(Object obj, SerializationInfo info, StreamingContext context)
   at System.Runtime.Serialization.ObjectManager.FixupSpecialObject(ObjectHolder holder)
   at System.Runtime.Serialization.ObjectManager.DoFixups()
   at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
   at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
   at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, IMethodCallMessage methodCallMessage)
   at Microsoft.Web.Deployment.Base64EncodingHelper.DeserializeHelper(BinaryFormatter formatter, Byte[] buffer)
   at Microsoft.Web.Deployment.Base64EncodingHelper.Deserialize(String str, Exception& handledException)
   at Microsoft.Web.Deployment.SerializationHelper.Deserialize(String str)
   at Microsoft.Web.Deployment.DeploymentAgentWorkerRequest.GetTraceMessage(String[] additionalMessage)
   at Microsoft.Web.Deployment.DeploymentAgent.HandleSync(DeploymentAgentWorkerRequest workerRequest)
   at Microsoft.Web.Deployment.DeploymentAgent.HandleRequestWorker(DeploymentAgentAsyncData asyncData)
   at Microsoft.Web.Deployment.DeploymentAgent.HandleRequest(DeploymentAgentAsyncData asyncData)
   at Microsoft.Web.Deployment.DeploymentAgent.BeginProcessRequest(DeploymentAgentWorkerRequest workerRequest, AsyncCallback callback, Object extraData)
Unrecognized rule 'AppOffline'. ParkingBot      0   

AppOffline 错误是什么?

检查部署文件夹中是否有名为 app_offline.htm 的文件。该文件适用于您正在部署并希望在完成之前阻止登录站点的情况。该文件可能在部署后未被删除。

我通过执行以下操作解决了这个问题:

  • 找到部署的 .pubxml 文件
  • 将 EnableMSDeployAppOffline 切换为真 错误。

您可能需要此功能,因此它可能不是一个选项。但是我的应用程序没有这个要求。

确保您的服务器上安装了最新版本的 IIS Web Deploy。我收到了这个错误。

我需要在我们的服务器上安装 Web Deploy 3.6 修复它。

要添加到 jbtule 的答案 (),您可能还需要降级到 3.6 版。我安装了 Web Deploy 4 并收到“Unrecognized rule 'AppOffline'”错误,但是在卸载版本 4 并安装版本 3.6 后,使用 <EnableMSDeployAppOffline>True</EnableMSDeployAppOffline> 进行部署 立即工作。