【问题标题】:Cannot debug in Visual Studio after changing the port number?更改端口号后无法在 Visual Studio 中调试?
【发布时间】:2016-12-14 19:24:41
【问题描述】:

我添加了 .UseUrls("http://*:5000") 行,以使来自其他主机的客户端能够访问 web api。

    public static void Main(string[] args)
    {
        var host = new WebHostBuilder()
            .UseKestrel()
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration()
            .UseStartup<Startup>()
            .UseUrls("http://*:5000") // Added
            .Build();

        host.Run();
    }

但是,使用浏览器访问localhost:5000/api/Test得到HTTP/1.1 400 Bad Request的错误? .UseUrls() 是否应该只编译用于生产?

HTTP/1.1 400 错误请求 日期:2016 年 8 月 8 日星期一 21:42:30 GMT 内容长度:0 服务器:红隼

测试时从 Visual Studio 输出窗口复制以下消息。

Microsoft.AspNetCore.Hosting.Internal.WebHost:Information: 请求开始 HTTP/1.1 GET http://localhost:5000/api/Test

Microsoft.AspNetCore.Server.IISIntegration.IISMiddleware:错误:“MS-ASPNETCORE-TOKEN”与预期的配对令牌“9bca37f2-7eda-4517-9f8f-60b6cc05cf01”不匹配,请求被拒绝。

Microsoft.AspNetCore.Hosting.Internal.WebHost:信息:请求在 8.5976 毫秒内完成 400

【问题讨论】:

  • 你能在UseIISIntegration()之前打电话给UseUrls()吗?见stackoverflow.com/questions/37862475/…
  • 请确认您是在 IIS、IISExpress 中运行它还是独立运行。
  • 我将UseUrls() 移到UseIISIntegration() 前面,它在调试运行应用程序名称时有效。如果使用 IIS express 运行,它仍然不起作用。
  • 即使在那之后仍然是相同的异常或另一个?

标签: asp.net-core asp.net-core-mvc .net-core


【解决方案1】:

您应该先致电.UseUrls() 和/或.UseConfig(),然后再致电.UseIISIntegration()

在 IIS/IISExpress 下运行正常时,您最终会得到 2 个进程。 IIS 在所需端口上侦听,而 Kestrel 在另一个端口上侦听。您的请求应发送至 IIS,然后转发至 Kestrel(使用 MS-ASPNETCORE-TOKEN)。

.UseIISIntegration() 的调用隐藏了这个映射。它实际上会更改您应用程序中的端口并将IIS 设置在所需的端口上。但是如果你以错误的顺序调用这两种方法,它就会中断。

您收到此错误消息是因为 Kestrel 预计会在 IIS 后面运行,并且收到了直接请求。它注意到因为IIS 不存在注入MS-ASPNETCORE-TOKEN 标头。

issue 记录了该问题,并可能在未来的版本中解决。

【讨论】:

  • 这为我解决了。我在手术后一小时内遇到了同样的问题。
【解决方案2】:

另一种解决方法。
由于UseKestrel()UseIISIntegration()的错误,你可以尝试不使用IIS/IIS Express运行调试,而是选择Kestrel服务器,这样可以避免错误发生。
您可以查看Properties\launchSettings.json 以了解其他调试选项。

【讨论】:

    猜你喜欢
    • 2014-05-14
    • 2017-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-21
    • 2023-04-01
    • 2013-07-27
    • 1970-01-01
    相关资源
    最近更新 更多