элемент location для безопасности web.config, когда путь является пустым «», а не «».»

#c# #security #web-config

#c# #Безопасность #web-config

Вопрос:

Я использую одну из ночных сборок resharper, и недавно я просто наткнулся на нее, указывая на это сообщение «Элемент Location не используется: путь пуст», учитывая следующий код web.config

  <location path="">
    <system.web>
      <authorization>
        <allow roles="Administrator" />
        <deny users="*" />
      </authorization>
    </system.web>
  </location>
  

Я нахожу это утверждение от resharper сомнительным, поскольку я использовал подобные элементы location без проблем.

Является ли пустой path просто значением по умолчанию для него, "." как указано в MSDN, по умолчанию для свойства path?

Что делает <location path=""> и <location path="."> функционально эквивалентным?

Комментарии:

1. path=»» не должен вызывать исключение. Я не знаком с resharper, но вы пробовали что-то в отдельном приложении и смотрели, работает ли это.

Ответ №1:

Значение по умолчанию для path является "." только тогда, когда вы его не переопределяете; это, <location> функционально эквивалентно <location path="."> — но <location path=""> отличается. Однако пустой путь не должен использоваться; если он когда-либо будет использован, это, скорее всего, ошибка в том, как .net обрабатывает пустые пути.

Комментарии:

1. Я действительно хочу некоторую проверку этого ответа, особенно вашего последнего предложения, в котором заключается вся цель этого вопроса.

2. Я наградил вас наградой за то, что вы единственный человек, пытающийся ответить на вопрос, вместо того, чтобы позволить ему истечь. Однако я все еще не могу принять этот ответ в настоящее время без какой-либо вспомогательной информации.

3. Спасибо. Я бы предоставил вам вспомогательную информацию, если бы она у меня была, но у меня ее нет — это всего лишь мое понимание того, как работает web.config.

Ответ №2:

Эта ошибка, безусловно, является еще одним примером чрезмерного усердия Resharper. Корпорация Майкрософт рекомендует использовать пустой путь в критических изменениях для ASP.NET 4.

Однако согласно MSDN,

При использовании location с отсутствующим атрибутом path параметры конфигурации применяются к текущему каталогу и ко всем дочерним каталогам.

таким образом, вы можете просто опустить атрибут path, который предотвращает ошибку Resharper.

Комментарии:

1. Это всегда хороший день, когда я могу принять ответ на вопрос, который я задал почти год назад.