Blazor托管客户端-在Azure应用程序服务上发布的Web应用程序上出现错误

问题描述 投票:0回答:2

当调用xxxxxxxx.azurewebsites.net时,浏览器控制台中将显示以下内容。谁能帮忙。谢谢。

blazor.webassembly.js:1 System.InvalidOperationException: A suitable constructor for type 'Microsoft.Extensions.Logging.LoggerFactory' could not be located. Ensure the type is concrete and services are registered for all parameters of a public constructor.
(anonymous) @ blazor.webassembly.js:1
blazor.webassembly.js:1   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateConstructorCallSite (Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache lifetime, System.Type serviceType, System.Type implementationType, Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain callSiteChain) <0x1ef0ee0 + 0x00086> in <filename unknown>:0 
(anonymous) @ blazor.webassembly.js:1
blazor.webassembly.js:1   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.TryCreateExact (Microsoft.Extensions.DependencyInjection.ServiceDescriptor descriptor, System.Type serviceType, Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain callSiteChain, System.Int32 slot) <0x1ee9cc0 + 0x000f2> in <filename unknown>:0 
(anonymous) @ blazor.webassembly.js:1
blazor.webassembly.js:1   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.TryCreateExact (System.Type serviceType, Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain callSiteChain) <0x1ee9878 + 0x00034> in <filename unknown>:0 
(anonymous) @ blazor.webassembly.js:1
blazor.webassembly.js:1   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateCallSite (System.Type serviceType, Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain callSiteChain) <0x1ee91b0 + 0x0005a> in <filename unknown>:0 
(anonymous) @ blazor.webassembly.js:1
blazor.webassembly.js:1   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory+<>c__DisplayClass7_0.<GetCallSite>b__0 (System.Type type) <0x1ee8ce8 + 0x00010> in <filename unknown>:0 
(anonymous) @ blazor.webassembly.js:1
blazor.webassembly.js:1   at System.Collections.Concurrent.ConcurrentDictionary`2[TKey,TValue].GetOrAdd (TKey key, System.Func`2[T,TResult] valueFactory) <0x1ed0ea0 + 0x0006c> in <filename unknown>:0 
(anonymous) @ blazor.webassembly.js:1
blazor.webassembly.js:1   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.GetCallSite (System.Type serviceType, Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain callSiteChain) <0x1ed0d28 + 0x00040> in <filename unknown>:0 
(anonymous) @ blazor.webassembly.js:1
blazor.webassembly.js:1   at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngine.CreateServiceAccessor (System.Type serviceType) <0x1ed0790 + 0x00018> in <filename unknown>:0 
(anonymous) @ blazor.webassembly.js:1
blazor.webassembly.js:1   at System.Collections.Concurrent.ConcurrentDictionary`2[TKey,TValue].GetOrAdd (TKey key, System.Func`2[T,TResult] valueFactory) <0x1ed0018 + 0x0006c> in <filename unknown>:0 
(anonymous) @ blazor.webassembly.js:1
blazor.webassembly.js:1   at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngine.GetService (System.Type serviceType, Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope serviceProviderEngineScope) <0x1ecfdd8 + 0x00024> in <filename unknown>:0 
(anonymous) @ blazor.webassembly.js:1
blazor.webassembly.js:1   at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope.GetService (System.Type serviceType) <0x1ee8c18 + 0x00020> in <filename unknown>:0 
(anonymous) @ blazor.webassembly.js:1
blazor.webassembly.js:1   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService (System.IServiceProvider provider, System.Type serviceType) <0x1ecf710 + 0x00062> in <filename unknown>:0 
(anonymous) @ blazor.webassembly.js:1
blazor.webassembly.js:1   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T] (System.IServiceProvider provider) <0x1ee8b20 + 0x0001e> in <filename unknown>:0 
(anonymous) @ blazor.webassembly.js:1
blazor.webassembly.js:1   at Microsoft.AspNetCore.Components.WebAssembly.Hosting.WebAssemblyHost.RunAsyncCore (System.Threading.CancellationToken cancellationToken) <0x1ee81e0 + 0x0016a> in <filename unknown>:0 
(anonymous) @ blazor.webassembly.js:1
blazor.webassembly.js:1   at TakeOut.Client.Program.Main (System.String[] args) <0x1e12b18 + 0x00152> in <filename unknown>:0 
(anonymous) @ blazor.webassembly.js:1
blazor.webassembly.js:1   at Microsoft.AspNetCore.Components.WebAssembly.Hosting.EntrypointInvoker.InvokeEntrypoint (System.String assemblyName, System.String[] args, Microsoft.AspNetCore.Components.WebAssembly.Hosting.SatelliteResourcesLoader satelliteResourcesLoader) <0x1d29ea8 + 0x001d6> in <filename unknown>:0 

客户端项目:

    -PropertyGroup-
    -TargetFramework-netstandard2.1-/TargetFramework-
    -RazorLangVersion-3.0-/RazorLangVersion-
    -ServiceWorkerAssetsManifest-service-worker-assets.js-/ServiceWorkerAssetsManifest-
  -/PropertyGroup-

  -ItemGroup-
    -PackageReference Include="Blazored.LocalStorage" Version="2.1.5" /-
    -PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="3.2.0-preview5.20216.8" /-
    -PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Build" Version="3.2.0-preview5.20216.8" PrivateAssets="all" /-
    -PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="3.2.0-preview5.20216.8" PrivateAssets="all" /-
    -PackageReference Include="Microsoft.AspNetCore.Blazor.HttpClient" Version="3.2.0-preview2.20160.5" /-
    -PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="3.1.4" /-
  -/ItemGroup-
  -ItemGroup-
    -ProjectReference Include="..\Shared\TakeOut.Shared.csproj" /-
  -/ItemGroup-

  -!-- When publishing, swap service-worker.published.js in place of service-worker.js ---
  -ItemGroup Condition="'$(DesignTimeBuild)' != 'true'"-
    -Content Remove="wwwroot\service-worker.js" /-
    -Content Update="wwwroot\service-worker.published.js" Link="wwwroot\service-worker.js" /-
  -/ItemGroup-
  -ItemGroup-
    -Folder Include="wwwroot\Images\" /-
  -/ItemGroup-
</Project>

服务器项目:

-Project Sdk="Microsoft.NET.Sdk.Web"-

  -PropertyGroup-
    -TargetFramework-netcoreapp3.1-/TargetFramework-
    -DisableImplicitComponentsAnalyzers-true-/DisableImplicitComponentsAnalyzers-
  -/PropertyGroup-

  -ItemGroup-
    -PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="3.2.0-preview5.20216.8" /-
    -PackageReference Include="Microsoft.Azure.Cosmos" Version="3.8.0" /-
    -PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.2" /-
  -/ItemGroup-

  -ItemGroup-
    -ProjectReference Include="..\Client\TakeOut.Client.csproj" /-
    -ProjectReference Include="..\Shared\TakeOut.Shared.csproj" /-
  -/ItemGroup-


-/Project-
azure azure-web-sites blazor wasm
2个回答
0
投票

这看起来像是链接器问题。如果您禁用链接,是否有效?

<PropertyGroup>
  <BlazorWebAssemblyEnableLinking>false</BlazorWebAssemblyEnableLinking>
</PropertyGroup>

此外,您正在使用WebAssembly的旧版本(Microsoft.AspNetCore.Components.WebAssembly“ Version =” 3.2.0-preview5.20216.8“)版本。

我建议升级到最新版本。

<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="3.2.0" />

您也可以尝试在本地清除缓存的文件。


0
投票

我将所有代码更新为Web程序集的发行版,该版本在我的PC上的开发模式下没有出现错误,但在将其发布为Azure时却出现了错误。

问题出在Web程序集中的Microsoft.AspNetCore.SignalR.Client。删除软件包和与该软件包相关的代码不会产生任何错误。

我通过在Web程序集中使用javascript SignalR解决了该问题。它可以工作,但是我宁愿使用软件包SignalR和C#代码来处理连接,而不是使用javascript。

注意:我只使用Web程序集(而不是托管Web程序集)尝试了该软件包。当发布到天蓝色时,该程序包也有同样的错误。

© www.soinside.com 2019 - 2024. All rights reserved.