2016-09-07 3 views
17

Мне нужно добавить элемент местоположения в свой файл web.config, но путь начинается с точки (и я не думаю, что могу изменить этот путь, это для letsencrypt automation).путь с точкой в ​​web.config <location>

Если я даю точку, как в <location path=".well-known/acme-challenge"></location>, сайт вообще не запускается (я думаю, что файл web.config вообще не разбирается, потому что я получаю страницу с просьбой настроить customErrors, но она уже сконфигурирован и, как правило, отлично работает)

Если я удалю точку, например, в <location path="well-known/acme-challenge"></location>, файл web.config будет правильно загружен, но, конечно, это не поможет мне настроить что-либо в нужном месте.

Конечная цель - отключить базовую аутентификацию (которая мне нужна для остальной части сайта) только на этом пути; Я даже не знаю, смогу ли я установить это в элементе <location>.

+0

Для чего я должен «решить» мою проблему, удалив базовую аутентификацию на всем сайте (это было временно, пока не была реализована окончательная система аутентификации). Все еще интересно узнать, есть ли еще одно решение. – youen

+3

Всегда существует возможность создания отдельного web.config внутри папки с точечной папкой (хорошо известной). –

+0

Я бы предпочел Второе предложение. Точка является запрещенным стартовым символом для местоположений, но вы можете удалить файл конфигурации в папку в качестве эффективного обходного пути. –

ответ

8

У меня была аналогичная проблема, когда у меня был сайт ASP.NET Forms, который заставлял аутентификацию на всех страницах.

Для расширения принятого ответа, вот точное web.config я положил в папку /.well-known (НЕ /.well-known/acme-challenge папку):

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <system.webServer> 
    <!-- This will stop any redirects you have at the higher level --> 
    <httpRedirect enabled="false" /> 

    <!-- This will stop any integrated mode settings you have at the higher level --> 
    <validation validateIntegratedModeConfiguration="false"/> 
    </system.webServer> 

    <!-- This will allow unauthenticated users to acme-challenge subfolder --> 
    <location path="acme-challenge"> 
    <system.web> 
     <authorization> 
     <allow users="*"/> 
     </authorization> 
    </system.web> 
    </location> 
</configuration> 

После добавления этого файла я смог использовать EcdsaAcmeNet, чтобы использовать Lets Encrypt с сайтом в IIS.

3

Как было предложено Ondrej Svedjdar в комментариях, решение настолько просто, что я об этом не думал.

Просто добавьте еще один файл web.config в папку, в которой он вам нужен.