【问题标题】:ASP.NET Core 3.1 web application throws error 500.30 when run on IIS Express, but not when using dotnet watch runASP.NET Core 3.1 Web 应用程序在 IIS Express 上运行时抛出错误 500.30,但在使用 dotnet watch run 时不会
【发布时间】:2019-12-16 16:55:57
【问题描述】:

在 IIS Express 上从 Visual Studio 2019 运行我的应用程序时,网页出现错误 500.30,并在输出中显示,

Exception thrown: 'System.NullReferenceException' in System.Private.CoreLib.dll

但是,当在终端中使用dotnet watch run 运行它时,页面运行时没有错误并正确显示。

我试过运行调试器,错误总是在这一行抛出,

CreateHostBuilder(args).Build().Run();

下面我的 ConfigureServes 方法完成后

// This method gets called by the runtime. Use this method to add services to the container.
        public static void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();
            services.AddRouting();
        }

我也尝试过修复我的 Visual Studio 2019 以及重新安装 .NET 3.1.100 SDK,但没有成功。

任何帮助将不胜感激!

编辑:

我必须发布程序然后运行 ​​.exe,但这是我得到的输出

crit: Microsoft.AspNetCore.Hosting.Diagnostics[6]
      Application startup exception
System.IO.DirectoryNotFoundException: C:\Users\ray.kochenderfer\Documents\public\hub\public\
   at Microsoft.Extensions.FileProviders.PhysicalFileProvider..ctor(String root, ExclusionFilters filters)
   at Microsoft.Extensions.FileProviders.PhysicalFileProvider..ctor(String root)
   at QualityHub.Startup.Configure(IApplicationBuilder app, IWebHostEnvironment env) in C:\Users\ray.kochenderfer\repos\quality_hub\Startup.cs:line 49
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at Microsoft.AspNetCore.Hosting.ConfigureBuilder.Invoke(Object instance, IApplicationBuilder builder)
   at Microsoft.AspNetCore.Hosting.ConfigureBuilder.<>c__DisplayClass4_0.<Build>b__0(IApplicationBuilder builder)
   at Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.<>c__DisplayClass13_0.<UseStartup>b__2(IApplicationBuilder app)
   at Microsoft.AspNetCore.Mvc.Filters.MiddlewareFilterBuilderStartupFilter.<>c__DisplayClass0_0.<Configure>g__MiddlewareFilterBuilder|0(IApplicationBuilder builder)
   at Microsoft.AspNetCore.HostFilteringStartupFilter.<>c__DisplayClass0_0.<Configure>b__0(IApplicationBuilder app)
   at Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken cancellationToken)
Unhandled exception. System.IO.DirectoryNotFoundException: C:\Users\ray.kochenderfer\Documents\public\hub\public\
   at Microsoft.Extensions.FileProviders.PhysicalFileProvider..ctor(String root, ExclusionFilters filters)
   at Microsoft.Extensions.FileProviders.PhysicalFileProvider..ctor(String root)
   at QualityHub.Startup.Configure(IApplicationBuilder app, IWebHostEnvironment env) in C:\Users\ray.kochenderfer\repos\quality_hub\Startup.cs:line 49
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at Microsoft.AspNetCore.Hosting.ConfigureBuilder.Invoke(Object instance, IApplicationBuilder builder)
   at Microsoft.AspNetCore.Hosting.ConfigureBuilder.<>c__DisplayClass4_0.<Build>b__0(IApplicationBuilder builder)
   at Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.<>c__DisplayClass13_0.<UseStartup>b__2(IApplicationBuilder app)
   at Microsoft.AspNetCore.Mvc.Filters.MiddlewareFilterBuilderStartupFilter.<>c__DisplayClass0_0.<Configure>g__MiddlewareFilterBuilder|0(IApplicationBuilder builder)
   at Microsoft.AspNetCore.HostFilteringStartupFilter.<>c__DisplayClass0_0.<Configure>b__0(IApplicationBuilder app)
   at Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken cancellationToken)
   at Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken cancellationToken)
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.Run(IHost host)
   at QualityHub.Program.Main(String[] args) in C:\Users\ray.kochenderfer\repos\quality_hub\Program.cs:line 16

【问题讨论】:

  • visual studio..的版本是多少?
  • 你有自定义的CreateHostBuilder吗?
  • Visual Studio 版本:16.4.1,我没有自定义 CreateHostBuilder
  • 在 Visual Studio 16.3.9 上运行 net core 3.0 项目没有问题,升级到 16.4.1 后我现在遇到了同样的问题。如果我有任何进展,我会在这里报告。
  • 谢谢!我后来在家里在两台不同的计算机上运行了这个程序,它在 IIS Express 和 dontnet CLI 上运行都没有问题,所以我认为这是 Visual Studio 的问题。

标签: c# asp.net-core iis-express


【解决方案1】:

我在使用 IISExpress 时遇到了同样的问题。我可以摆脱 500.30 错误的唯一方法是在 OutOfProcess 模式下运行应用程序。

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
  </PropertyGroup>

【讨论】:

  • 这对我有用。我无法在 IIS 上运行,这修复了它。
【解决方案2】:

关于这个问题有github issue

使用 2.x 版本的 Microsoft.Extensions.* 和 ASP.NET Core 3.0/3.1 项目中的 Microsoft.AspNetCore.* 包是 *不支持。

在我的情况下,我依赖于依赖于 Microsoft.AspNetCore 2.x.x 的 nuget 包。删除 nuget 后,项目在 IIS Express 下运行没有问题。

如果有人仍然遇到此问题,您可以尝试使用 2.x 版本删除依赖项,因为它们会自动从 SDK 解决。

【讨论】:

  • 这是一个奇怪的问题。在我的本地 IIS(Windows 10)上,我可以部署我的项目并且它运行没有错误,在我的生产服务器(Windows Server 2012)上,一旦我在更改这些 sql 设置之前在appsettings.production.json 中配置 sql 设置,它就会抛出这个错误,至少主页可以打开
  • @CharlesOkwuagwu 我认为您的问题可能完全不同。也许服务器确实找不到托管数据库的服务器。
【解决方案3】:

这可能是由于多种原因造成的,如果没有记录,将很难确定发生了什么。

添加一个类似配置的 web.config。 stdoutLogEnabled 将生成有助于进一步解决问题的日志,特别是如果它特定于 IIS Express。

<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet"
                  arguments=".\MyApp.dll"
                  stdoutLogEnabled="false"
                  stdoutLogFile=".\logs\stdout"
                  hostingModel="inprocess" />
    </system.webServer>
  </location>
</configuration>

https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/aspnet-core-module?view=aspnetcore-3.1

【讨论】:

  • 我添加了 web.config 文件并运行了同样问题的程序。标准输出日志也是空的。
  • 有点晚...尝试添加 stdoutLogEnabled="true" 以获取标准输出.. 但请确保您有日志文件夹
【解决方案4】:

我解决了这个问题。该问题与 ASP.NET Core 版本 2.2.0 与 Visual Studio 2019 版本 16.4.1 交互有关。我将 ASP.NET Core 降级到 2.1.7 版,然后将其更新回 2.2.0 版。这似乎已经解决了这个问题。

编辑:这只是暂时解决了问题。但是,降级到 2.1.7 似乎可以可靠地工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-26
    • 2021-09-11
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    相关资源
    最近更新 更多