更改端口号后无法在Visual Studio中调试?

ca9*_*3d9 7 asp.net-core-mvc .net-core asp.net-core

我添加了该行.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();
    }
Run Code Online (Sandbox Code Playgroud)

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

HTTP/1.1 400 Bad Request
Date: Mon, 08 Aug 2016 21:42:30 GMT
Content-Length: 0
Server: Kestrel

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

Microsoft.AspNetCore.Hosting.Internal.WebHost:信息:请求启动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.5976ms 400结束

Ger*_*oli 9

你应该先打电话.UseUrls()和/或.UseConfig()然后打电话.UseIISIntegration().

在IIS/IISExpress下运行正常时,最终会有2个进程.IIS在另一个端口上侦听所需的端口和Kestrel.您的请求应该转到IIS,然后转发给Kestrel(带有MS-ASPNETCORE-TOKEN).

调用.UseIISIntegration()隐藏此映射.它实际上会更改应用程序中的端口并设置IIS所需的端口.但如果你以不正确的顺序调用这两种方法,它就会中断

您收到此错误消息是因为Kestrel预计会落后IIS并收到直接请求.它注意到因为IIS没有注入MS-ASPNETCORE-TOKEN标题.

问题记录了该问题,并可能在将来的版本中解决它.