Как указать расположение корня (/) в web.config?

Как указать корневое расположение в web.config, чтобы пользователи, не прошедшие проверку подлинности, могли получить к нему доступ?

В качестве корневого каталога используется default.aspx, но пользователи обычно не видят default.aspx, они видят только http://mysite.com/.

Итак, я добавил

  <location path="~/default.aspx">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>

Что работает, если пользователь нажимает mysite.com/default.aspx, но если пользователь нажимает mysite.com/ - он все равно перенаправляется на страницу входа.

Я пробовал <location path="~"> (не помогает), а также <location path="~/">, <location path=""> (сайт полностью не работает) и не смог заставить его работать.

Любые идеи?


person Michael Entin    schedule 20.02.2012    source источник
comment
могут ли они получить хотя бы доступ к URL: http://mysite.com/default.aspx?   -  person balexandre    schedule 20.02.2012
comment
почему вы не используете IIRF для перенаправления пользователя из default.aspx путем написания правила перезаписи и перенаправления.?   -  person CodeSpread    schedule 29.11.2012
comment
Можете ли вы опубликовать весь код web.config, связанный с аутентификацией? Я предполагаю, что есть больше мест, где вы отказываетесь от пользователей, где вы определяете местоположение входа в систему. Я бы хотел увидеть все это в том порядке, в котором вы указали это в своем web.config.   -  person Charles Wesley    schedule 03.12.2012
comment
Попробуйте <location path="default.aspx"> в своей веб-конфигурации   -  person Sayan    schedule 04.12.2012
comment
Найдите ответ lulhuh ниже - он помог мне в той же ситуации (отметьте как ответ, если он вам тоже помог).   -  person Michael Logutov    schedule 21.10.2013
comment
Ответ от lulhuh должен быть принятым ответом stackoverflow.com/a/19154854/481207   -  person Matt    schedule 06.10.2015


Ответы (10)


Попробуй это:

<system.web>
    <urlMappings enabled="true">
        <add url="~/" mappedUrl="~/default.aspx" />
    </urlMappings>
    <authorization>
        <allow roles="admin"/>
        <deny users="*" />
    </authorization>
</system.web>
<location path="Default.aspx">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>
person Alexey Smolyakov    schedule 03.10.2013
comment
путь может быть папкой? ~ / подпапка? - person Kiquenet; 17.12.2020

только использовать

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

or don't write path,because the default path is root(.)

person mina morsali    schedule 06.01.2014
comment
Одной точкой писать нельзя, возникает ошибка! : D - person Bruno Casali; 24.07.2014
comment
вы уверены? этот ресурс msdn говорит, что путь по умолчанию - точка! msdn.microsoft.com/en-us / library / vstudio / - person mina morsali; 26.07.2014
comment
Я могу подтвердить, что точка (и отсутствие пути вообще) действительна для указания на корень, но если что-то, что вы помещаете в этом месте, указано в другом месте (за пределами этого местоположения) в веб-конфигурации, это вызовет ошибка для повторяющихся разделов конфигурации. Чтобы это работало, нужно удалить глобальное определение. - person Ishmaeel; 22.12.2017
comment
О, также важно: Root в этом случае на самом деле означает Root и все, что ниже него, поэтому это решение фактически означает, что вы предоставили анонимный доступ ко всему сайту целиком. - person Ishmaeel; 22.12.2017

Вы можете добиться двумя способами

Метод 1:

Вы можете установить путь перенаправления на http://mysite.com/default.aspx в IIS, если какой-либо пользователь непосредственно приходит на ваш сайт. в IIS7 вы можете сделать это, щелкнув Default Document. Здесь я прикрепил изображение для вашей справки

Настройка IIS7 для добавления перенаправления страницы по умолчанию

Способ 2

Вы можете перейти по этому URL-адресу Членство в ASp.NET, чтобы задать настройки веб-конфигурации.

Дайте мне знать, если вам понадобится более подробная информация по этому поводу.

person Chirag Babaria    schedule 29.11.2012

Раньше мы делали это так, чтобы создать папку для всех функций, требующих входа в систему, и установить требование авторизации для этой папки. Все aspx переходят в эту папку. Корень сайта остается открытым.

person b0rg    schedule 30.11.2012
comment
Что ж, у нас ситуация противоположная, у нас всего несколько страниц, которые не требуют аутентификации. На самом деле, сейчас нет смысла использовать ваш подход. - person Dyppl; 03.12.2012

Вы, наверное, используете формы аутентификации нет?

<authentication mode="Forms">
   <forms loginUrl="~/Default.aspx" />
</authentication>

Это решит вашу проблему. Альтернатива:

  <location path="~/Default.aspx">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>
person Demian Flavius    schedule 30.11.2012
comment
Авторизация не происходит на главной странице, у меня есть отдельная форма для входа пользователя, поэтому первый совет в моем случае не работает. У меня есть директива location, аналогичная той, что вы опубликовали, но она не помогает. example.com/MainPage.aspx работает, в то время как example.com - нет. - person Dyppl; 03.12.2012

Если вы хотите разрешить доступ к default.aspx неавторизованным пользователям, вы можете использовать

  <location path="Default.aspx">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>

перед <system.web> и установите эту страницу по умолчанию на своем веб-сервере.
В Visual Studio вы можете выбрать страницу и «Сделать стартовой страницей».

Если вы хотите разрешить доступ ко всем файлам в корне, вам нужно создать папки, в которые вы помещаете свои страницы, которые должны быть доступны для аутентифицированных пользователей.

Вы можете создать папку Secure, куда вы можете поместить все свои защищенные страницы и изменить свой web.config следующим образом:

  <location path="Secure">
    <system.web>
      <authorization>
        <deny users="?"/>
      </authorization>
    </system.web>
  </location>

удаление

    <authorization>
        <deny users="?"/>
    </authorization>
person LeftyX    schedule 20.02.2012
comment
это точная конфигурация, которую я опубликовал в вопросе, и, как я указал, она не работает. запрос корневого каталога (mysite.com/) обрабатывается иначе, чем запрос mysite.com/default.aspx - правило для default.aspx не применяется - person Michael Entin; 29.02.2012

Чтобы указать корневой каталог, вы должны установить его вне блока местоположения.

<configuration> 
  <system.web>
    <authorization>
      <allow users=“*“/>
    </authorization>
  </system.web>
</configuration>

а затем защитите другую папку с помощью блока местоположения

<location path=“AccessDenied.aspx“>
    <system.web>
        <authorization>
            <deny users=“?“/>
        </authorization>
    </system.web>
</location>
person Wasa    schedule 29.08.2013

Использовать этот :

<location path="Default.aspx">
  <system.web>
    <authorization>
      <allow users="*"/>
    </authorization>
  </system.web>
</location>
<location path="~">
  <system.web>
    <authorization>
      <allow users="*"/>
    </authorization>
  </system.web>
</location>

Меня устраивает.

person SeyoS    schedule 02.09.2014

Мерк был прав!

я использовал

<location path="">
            <system.webServer>
                <httpRedirect enabled="true" destination="http://www.newpathdestination.com" exactDestination="true" httpResponseStatus="Permanent" />
            </system.webServer>
        </location>

на сетевом сервере Windows (не спрашивайте), не вставляя ничего между кавычками для пути к местоположению. Перенаправляет запрос старой домашней страницы на новую домашнюю страницу.

person David P    schedule 16.10.2015

Если вы хотите указать корень каталога, используйте <location path="" >

person merk    schedule 28.08.2012