ASP.NET Core应用程序部署到自己的服务器错误

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

使用Visual Studio 2019发布应用程序后,切换到应用程序的索引页面时出现错误。

我有此异常:InvalidOperationException:找不到包'Microsoft.AspNet.WebApi.Client'的编译库位置

有异常的堆栈跟踪:

Microsoft.Extensions.DependencyModel.CompilationLibrary.ResolveReferencePaths(ICompilationAssemblyResolver解析器,列出程序集)Microsoft.Extensions.DependencyModel.CompilationLibrary.ResolveReferencePaths()Microsoft.AspNetCore.Mvc.ApplicationParts.AssemblyPart + <> c.b__8_0(CompilationLibrary库)System.Linq.Enumerable + SelectManySingleSelectorIterator.MoveNext()Microsoft.AspNetCore.Mvc.Razor.Compilation.MetadataReferenceFeatureProvider.PopulateFeature(IEnumerable parts,MetadataReferenceFeature功能)Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartManager.PopulateFeature(TFeature功能)Microsoft.AspNetCore.Mvc.Razor.Internal.DefaultRazorReferenceManager.GetCompilationReferences()System.Threading.LazyInitializer.EnsureInitializedCore(ref T目标,ref bool初始化,ref对象syncLock,Func valueFactory)Microsoft.AspNetCore.Mvc.Razor.Internal.DefaultRazorReferenceManager.get_CompilationReferences()Microsoft.AspNetCore.Mvc.Razor.Internal.LazyMetadataReferenceFeature.get_References()Microsoft.CodeAnalysis.Razor.CompilationTagHelperFeature.GetDescriptors()Microsoft.AspNetCore.Razor.Language.DefaultRazorTagHelperBinderPhase.ExecuteCore(RazorCodeDocument codeDocument)Microsoft.AspNetCore.Razor.Language.RazorEnginePhaseBase.Execute(RazorCodeDocument codeDocument)Microsoft.AspNetCore.Razor.Language.DefaultRazorEngine.Process(RazorCodeDocument文档)Microsoft.AspNetCore.Razor.Language.DefaultRazorProjectEngine.ProcessCore(RazorCodeDocument codeDocument)Microsoft.AspNetCore.Razor.Language.RazorProjectEngine.Process(RazorProjectItem projectItem)Microsoft.AspNetCore.Mvc.Razor.Internal.RazorViewCompiler.CompileAndEmit(字符串relativePath)Microsoft.AspNetCore.Mvc.Razor.Internal.RazorViewCompiler.OnCacheMiss(字符串NormalizedPath)Microsoft.AspNetCore.Mvc.Razor.Internal.DefaultRazorPageFactoryProvider.CreateFactory(字符串relativePath)Microsoft.AspNetCore.Mvc.Razor.RazorViewEngine.CreateCacheResult(HashSet expirationTokens,字符串relativePath,bool isMainPage)Microsoft.AspNetCore.Mvc.Razor.RazorViewEngine.OnCacheMiss(ViewLocationExpanderContext expanderContext,ViewLocationCacheKey cacheKey)Microsoft.AspNetCore.Mvc.Razor.RazorViewEngine.LocatePageFromViewLocations(ActionContext actionContext,字符串pageName,bool isMainPage)Microsoft.AspNetCore.Mvc.Razor.RazorViewEngine.FindView(ActionContext上下文,字符串viewName,bool isMainPage)Microsoft.AspNetCore.Mvc.ViewEngines.CompositeViewEngine.FindView(ActionContext上下文,字符串viewName,bool isMainPage)Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor.FindView(ActionContext actionContext,ViewResult viewResult)Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor.ExecuteAsync(ActionContext上下文,ViewResult结果)Microsoft.AspNetCore.Mvc.ViewResult.ExecuteResultAsync(ActionContext上下文)Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeResultAsync(IActionResult结果)Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResultFilterAsync()Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResultExecutedContext上下文)Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.ResultNext(下一个参考状态,参考作用域范围,参考对象状态,参考布尔值已完成)Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeResultFilters()Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter()Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext上下文)Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(下一个参考状态,参考作用域范围,参考对象状态,参考布尔已完成)Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync()Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync()Microsoft.AspNetCore.Routing.EndpointMiddleware.Invoke(HttpContext httpContext)Microsoft.AspNetCore.Routing.EndpointRoutingMiddleware.Invoke(HttpContext httpContext)Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext上下文)Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext上下文)

[我尝试通过各种方式编写新配置,但更改了csproj文件,但没有任何帮助。

有web.config文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false">
      <environmentVariables>
        <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Production" />
      </environmentVariables>
    </aspNetCore>
  </system.webServer>
</configuration>

有我的csproj文件:

<Project Sdk="Microsoft.NET.Sdk.Web">

<PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
    <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
    <GeneratePackageOnBuild>false</GeneratePackageOnBuild> 
    <!-- Fix for"System.InvalidOperationException: Cannot find compilation library location for package 'Microsoft.AspNet.WebApi.Client'" -->
    <MvcRazorExcludeRefAssembliesFromPublish>false</MvcRazorExcludeRefAssembliesFromPublish>
</PropertyGroup>

<ItemGroup>
    <Compile Remove="Migrations\***.cs" />
    <Compile Remove="Migrations\***.cs" />
</ItemGroup>

<ItemGroup>
    <PackageReference Include="Microsoft.AspNet.WebApi.Client" Version="5.2.7" />
    <PackageReference Include="Microsoft.AspNetCore.App">
        <PrivateAssets Condition="'%(PackageReference.Version)' == ''">all</PrivateAssets>
        <Publish Condition="'%(PackageReference.Version)' == ''">true</Publish>
    </PackageReference>
    <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
    <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="3.1.1" />
    <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.7.9" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.2.6" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.2.4" />
</ItemGroup>

</Project>

[请帮助,我不知道如何解决此异常。

c# asp.net-core .net-core deployment
2个回答
0
投票

尝试将此添加到您的csproj文件-

<MvcRazorExcludeRefAssembliesFromPublish>False</MvcRazorExcludeRefAssembliesFromPublish>

根据https://github.com/dotnet/roslyn/issues/37760#issuecomment-518783156


0
投票

我相信这与您的发布设置有关。有问题的文件没有发送到服务器。您可以执行以下操作:

在发布窗口中的设置下,您可以选择Deployment Mode = Self contained

替代解决方案-如果这是从1到.NET Core 2的站点升级,则>]

((来源:Error on published ASP.NET core site: Cannot find compilation library location for package 'Microsoft.AspNet.WebApi.Client'

  • 您可能需要停止应用程序
  • 清除wwwroot文件夹-旧版本的DLL可能会被留下。
  • 重新上传/部署
© www.soinside.com 2019 - 2024. All rights reserved.