Программно вставить запись в динамический web.config ASP.NET Core Web App - PullRequest
0 голосов
/ 10 июля 2019

Используя Visual Studio 2017, я создал ASP.NET Core Web App (Core 2.1). В Visual Studio у него нет файла web.config, но он отлично работает, используя F6 для запуска.
Я принимаю это в принимающей компании DiscountASP.NET. Чтобы опубликовать его на хосте, я использую функцию веб-развертывания Visual Studio, которая прекрасно работает.

В моей корневой папке на DiscountASP.NET внезапно появляется файл web.config, как показано здесь:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\CoreWbApSH01.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
    </system.webServer>
  </location>
</configuration>
<!--ProjectGuid: a532f7f5-c3da-40e3-9158-00bcc9555660-->

Пока все хорошо. Все отлично работает.

МОЯ ПОТРЕБНОСТЬ: теперь, когда посетитель заходит на сайт, я хочу принудительно установить http на https. У хостинговой компании есть способ сделать это, объяснил в своей статье здесь: База знаний DASP

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Redirect to https" stopProcessing="true">
                    <match url=".*" />
                    <conditions>
                        <add input="{HTTPS}" pattern="off" ignoreCase="true" />
                    </conditions>
                    <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

Этот выше xml действительно работал хорошо. Но чтобы заставить его работать, я сначала ввел Web Deploy в мою папку на DiscountASP.NET, затем вручную FTP в эту папку и вручную отредактировал там более-менее эфемерный файл web.config, вставив сегмент <rewrite>.

Это прекрасно работает, за исключением того, что каждый раз, когда я редактирую веб-сайт и переустанавливаю, мне приходится вручную подключаться по FTP и снова редактировать файл web.config.

У меня такой вопрос: В Visual Studio 2017 есть ли способ, которым я могу программным способом автоматически вставить этот сегмент в эфемерный файл web.config, который появляется при развертывании в DiscountASP.NET?

1 Ответ

0 голосов
/ 11 июля 2019

Если вы требуете принудительного применения HTTPS, а не пытаетесь изменить файл web.config, вы можете добавить код в код запуска вашего приложения (ConfigureServices) для принудительного применения HTTPS.

В рабочем ASP.NET CoreВ веб-приложениях вызывайте промежуточное программное обеспечение перенаправления HTTPS (UseHttpsRedirection) для перенаправления HTTP-запросов на HTTPS.

При развертывании проекта веб-API существуют некоторые предостережения.

Для полного ответа на ваш вопрос прочитайте эту статью .

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