代码之家  ›  专栏  ›  技术社区  ›  Aeseir

部署到Azure会导致致命错误

  •  4
  • Aeseir  · 技术社区  · 6 年前

    我正在尝试将我的demo IdentityServer4应用程序发布到Azure web app服务以进行测试。 包括应用程序加载在内,一切都运行良好。

    但是,没有生成任何日志,因此我怀疑并检查了诊断结果,发现:

    2018-02-28 08:54:21.626 +00:00 [Critical] Microsoft.AspNetCore.Hosting.Internal.WebHost: Hosting startup assembly exception
    System.InvalidOperationException: Startup assembly Microsoft.AspNetCore.AzureKeyVault.HostingStartup failed to execute. See the inner exception for more details. ---> System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.AspNetCore.AzureKeyVault.HostingStartup, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
       at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks, IntPtr ptrLoadContextBinder)
       at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, IntPtr ptrLoadContextBinder)
       at System.Reflection.Assembly.Load(AssemblyName assemblyRef)
       at Microsoft.AspNetCore.Hosting.WebHostBuilder.BuildCommonServices(AggregateException& hostingStartupErrors)
    

    不仅没有生成日志,我的一些操作也没有正常工作。在这种情况下,可以登录到identityserver4(我构建了一个自定义存储)。

    有人能解释我在这里做错了什么吗?不知道从哪里开始寻找。

    2 回复  |  直到 6 年前
        1
  •  4
  •   mackie    6 年前

    看来你错过了 Microsoft.AspNetCore.AzureKeyVault.HostingStartup 装配

    你能确认它确实是你部署包的一部分吗?

        2
  •  2
  •   Aeseir    6 年前

    这个问题似乎与Azure Web App服务的运行方式有关。 出于某种原因,它正在为此程序集调用未知函数。

    不幸的是,Asp Net Core 2.0没有将此程序集作为任何包的一部分,而且从外观上看,它在任何2.1之前的库中都不存在。

    解决方案是对程序包进行脏安装:

    dotnet add package Microsoft.AspNetCore.AzureKeyVault.HostingStartup --version 2.1.0-preview1-27946 --source https://dotnet.myget.org/F/aspnetcore-dev/api/v3/index.json
    

    这实际上部署了一个与ASP CORE 2.0不兼容的包,但在发布到Azure时,该包被选中,从而彻底消除了该问题。

    在此基础上,该软件包将成为Microset的一部分。AspNetCore。即将推出所有2.1版本。