Жестко закодированные пути в автоматически сгенерированном web.config при использовании IIS с .NET Core 2.2 Web API - PullRequest
1 голос
/ 27 июня 2019

Система, над которой я работаю, состоит из нескольких API .NET Framework, чтобы избежать необходимости запускать несколько экземпляров Visual Studio при работе в системе, мы настроили API для локального запуска в IIS, а не в IIS Express.

Сейчас я пытаюсь сделать то же самое для нового веб-API .NET Core 2.2, но у меня возникают некоторые проблемы с файлом web.config. Visual Studio автоматически генерируется при каждом запуске приложения.

Это новый веб-API .NET Core 2.2, созданный с VS 2019. После изменения проекта для запуска в IIS вместо IIS Express launchSettings.json выглядит как

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iis": {
      "applicationUrl": "http://localhost/ExampleApi",
      "sslPort": 0
    },
    "iisExpress": {
      "applicationUrl": "http://localhost:52245",
      "sslPort": 44376
    }
  },
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "profiles": {
    "IIS Express": {
      "commandName": "IIS",
      "launchBrowser": true,
      "launchUrl": "api/values",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "ExampleApi": {
      "commandName": "Project",
      "launchBrowser": true,
      "launchUrl": "api/values",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "https://localhost:5001;http://localhost:5000"
    }
  }
}

Файл web.config, который генерирует Visual Studio, выглядит как

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="C:\Program Files\dotnet\dotnet.exe" arguments="exec &quot;C:\Users\Richard\Dev\ExampleApi\ExampleApi\bin\Debug\netcoreapp2.2\ExampleApi.dll&quot;" stdoutLogEnabled="false" hostingModel="InProcess">
        <environmentVariables>
          <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
        </environmentVariables>
      </aspNetCore>
    </system.webServer>
  </location>
</configuration>

Обратите внимание на жестко заданные, специфичные для машины пути в aspNetCore. Если я удаляю пути / элементы, как только я снова запускаю API, пути добавляются снова.

Это означает, что web.config необходимо будет игнорировать, иначе каждый разработчик, который запускает API, собирается изменить этот файл. Однако gitignoring для файла означает, что мы не сможем использовать файл web.config для настроек IIS, если нам потребуется.

Есть ли способ избежать этого? Если нет, то можете ли вы что-то сделать в web.config, что нельзя сделать в промежуточном программном обеспечении .NET Core или в конфигурации кода?

Когда я посмотрел, как сделать такие вещи, как установить максимальное время ожидания запроса или переписать правила, ответы, которые я нахожу, кажутся смешанными между кодом и web.config, например. пример 1 , ссылка 2

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