Почему я получаю 500 только на пустельгу? - PullRequest
0 голосов
/ 02 апреля 2019

Я получил ASP.NET Core 2.0 WEB-API , и он должен работать на kestrel , потому что он будет там размещен. Когда я начинаю с Kestrel (посмотрите на мои параметры запуска ниже), появляется POST, и я всегда получаю 500, не возвращаясь в код . Означает, что я оставляю точки взлома везде, и когда я выполняю POST в Swagger, ни одна точка останова не достигается. Когда я использую IIS, он работает нормально. 500 приходит сразу. 500 приходит также после развертывания в Linux Kestrel.

Я реализую @ Startup.cs:

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        app.Use((context, next) =>
        {
            context.Response.Headers.Remove("Server");
            return next();
        });

@Program.cs:

    public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .UseUrls("http://0.0.0.0:5000")
            .UseIISIntegration()
            .UseApplicationInsights()
            .UseKestrel()
            .Build();

@launchSettings.json:

"Kestrel": {
  "commandName": "Project",
  "launchBrowser": true,
  "launchUrl": "",
  "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Development"
  }
}

В Kestrel вызов POST должен обрабатывать метод Controller со всей его логикой, как в IIS.

1 Ответ

0 голосов
/ 03 апреля 2019

У меня это работает с

    public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .UseIISIntegration()
            .UseApplicationInsights()
            .UseKestrel(options =>
            {
                options.Listen(IPAddress.Parse("0.0.0.0"), 5000);
            })
            .Build();

и параметры запуска:

    "CZKestrel": {
  "commandName": "Project",
  "launchBrowser": true,
  "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Development"
  },
  "applicationUrl": "http://localhost:59883/"
}

для локальной отладки.

Чтобы заставить его работать в качестве Сервиса, я сделал dotnet restore и dotnet build, скопировал только папку с созданной dll в другое место и затем запустил / запустил сервис. Я предполагаю, что когда я запускаю его, я должен быть внутри или только на одну папку выше папки dll. Теперь это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...