Изменение сгенерированного файла web.config с помощью net core 2 при работе на IIS - PullRequest
0 голосов
/ 02 мая 2018

У меня есть webapi 2.0, который я публикую с помощью ftp на моем сервере Windows 2012 под управлением IIS 8.5.

Я столкнулся с проблемой, которую могу решить, используя эту ссылку здесь;

Ошибка 405. Методы, не разрешенные в запросах PUT и DELETE для ASP.NET Core

так, добавив;

<modules runAllManagedModulesForAllRequests="false">
    <remove name="WebDAVModule" />
</modules>

Я могу исправить свои проблемы PUT и DELETE, однако всякий раз, когда я публикуюсь, мне приходится физически редактировать файл web.config, чтобы отразить добавление приведенного выше кода?

Может кто-нибудь сказать мне, как автоматически добавить это, когда я публикую с использованием ftp с веб-развертыванием?

Мой program.cs имеет встроенную сборку по умолчанию;

        public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .Build();

1 Ответ

0 голосов
/ 02 мая 2018

Одно из решений, которое я сделал, - это создание скрипта Powershell, который изменит ваш файл web.config так, как вам нужно, и запустит его в качестве цели предварительной публикации.

Сохраните скрипт в каталоге вашего проекта и обновите файл .csproj, чтобы он запустился непосредственно перед публикацией проекта:

Щелкните левой кнопкой мыши имя проекта в Visual Studio -> «Редактировать .csproj» и вставьте его где-нибудь в теги <Project>:

<Target Name="PrepublishScript" BeforeTargets="PrepareForPublish" Condition=" '$(IsCrossTargetingBuild)' != 'true' ">
    <Exec Command="powershell.exe -NonInteractive -File Prepublish.ps1" />
</Target>

Edit: Моя задача была проще, мне просто нужно было удалить LAUNCHER_ARGS, добавленный к элементу <aspNetCore>, поэтому я просто заменил простую строку на пустую строку,

Prepublish.ps1:

(Get-Content web.config).Replace(" arguments=`"%LAUNCHER_ARGS%`"", "") | Set-Content web.config
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...