将 MVC 应用程序发布到 Azure 失败并出现 ERROR_NOT_SUPPORTED 错误

Posted

技术标签:

【中文标题】将 MVC 应用程序发布到 Azure 失败并出现 ERROR_NOT_SUPPORTED 错误【英文标题】:Publish MVC App to Azure failed with ERROR_NOT_SUPPORTED error 【发布时间】:2018-02-14 08:44:10 【问题描述】:

我想通过 Visual Studio 2017 将 MVC 应用程序发布到 Azure App Servis。 但是发布失败并出现 ERROR_NOT_SUPPORTED 错误。 img:https://i.imgur.com/f8Z5W0A.png

在 tmp 文件(由错误消息标记)中出现以下消息:

System.AggregateException: One or more errors occurred. ---> System.Exception: Publish failed due to build errors. Check the error list for more details.
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at Microsoft.VisualStudio.Web.Publish.PublishService.VsWebProjectPublish.<>c__DisplayClass40_0.<PublishAsync>b__2()
at System.Threading.Tasks.Task`1.InnerInvoke()
at System.Threading.Tasks.Task.Execute()

我尝试更改 Azure Web 应用程序常规设置(框架版本、平台...)并将所有应用程序设置从 Web.config 添加到我的 Azure 应用程序服务,但没有帮助。 我的 MVC 应用程序具有以下 Web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog" />
  </configSections>
  <appSettings>
    <add key="IsInTestMode" value="false" />
    <add key="UseDB" value="..." />
    <add key="StoredProcedureNamePrefix" value="..." />
    <add key="NumberOfRetriesAtTransactionDeadlock" value="20" />
  </appSettings>
  <connectionStrings>
    <add name="ProductionConnectionString" connectionString="Data Source=...." />
  </connectionStrings>
  <system.web>
    <customErrors mode="Off" />
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
    <authentication mode="Windows" />
    <globalization requestEncoding="utf-8" responseEncoding="utf-8" />
    <caching>
      <outputCacheSettings>
        <outputCacheProfiles>
          <add name="LongTime" duration="7200" varyByParam="none" />
        </outputCacheProfiles>
      </outputCacheSettings>
    </caching>
    <authorization>
      <deny users="?" />
    </authorization>
    <pages>
      <namespaces>
        <add namespace="System.Web.Helpers" />
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.html" />
        <add namespace="System.Web.Optimization" />
        <add namespace="System.Web.Routing" />
        <add namespace="System.Web.WebPages" />
      </namespaces>
    </pages>
    <sessionState timeout="3" />
  </system.web>
  <system.webServer>
    <urlCompression doStaticCompression="true" doDynamicCompression="true" />
    <httpCompression>
      <dynamicTypes>
        <add mimeType="application/json" enabled="true" />
        <add mimeType="application/json; charset=utf-8" enabled="true" />
      </dynamicTypes>
    </httpCompression>

  </system.webServer>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e3" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <nlog autoReload="true" throwExceptions="true" internalLogFile="$basedir/Logs/internal_log.txt" internalLogLevel="Trace">
    <!--......-->
  </nlog>
</configuration>

在 IIS Manager.Net 授权规则中启用“匿名用户,条目类型:本地”命令后,我成功地将我的应用程序安装到 Azure 虚拟机 IIS,并且它运行起来没有任何复杂性。 使用默认的“拒绝”设置,应用程序失败并显示“访问被拒绝”消息。

是否有人遇到过同样的情况或有任何线索可能是什么问题或我该如何解决?

【问题讨论】:

我认为这可能与“身份验证”模式有关。尝试将其更改为 Forms,并查看它是否部署。此外,nlog 为 Azure 提供了不同的包,请参阅 Azure 是否支持您在应用程序中使用的包。 我尝试更改“身份验证”模式,但我得到了同样的错误。我将检查 Nlog 包。谢谢! 【参考方案1】:

我可以解决我的问题。在项目 wpp.targets 文件中设置了“DeployIisAppPath”。 在我从 wpp.targets 文件中删除后:

<DeployIisAppPath> Default Web Site/... </DeployIisAppPath>

我可以发布我的 WebApplication。

感谢您的帮助。

【讨论】:

以上是关于将 MVC 应用程序发布到 Azure 失败并出现 ERROR_NOT_SUPPORTED 错误的主要内容,如果未能解决你的问题,请参考以下文章

从 GitHub 持续部署在 Azure 中失败(ASP.NET 5 和 MVC 6)

将 MVC 应用程序部署到 Azure 应用程序服务时出现 POSTS 问题

将 Web 应用程序发布到 Azure 期间出现异常

在 Azure 逻辑应用中执行存储过程失败并出现网关超时

使用 mfp push 部署到 Azure VM 经常失败并出现错误 FWLSE3000E

Azure 应用服务部署失败并出现错误:“凭据”不能为空