Анонимный доступ к обработчику ashx в SharePoint 2010

Я видел много информации в Интернете о том, как разрешить анонимный доступ к определенной странице приложения SharePoint путем наследования от UnsecuredLayoutsPageBase и т. Д.

Как я могу добиться того же для обработчика ashx, который находится в каталоге макетов? По умолчанию SP требует аутентификации, чтобы добраться до обработчика. Я могу обойти это, разрешив анонимный доступ к самому сайту, но мне это не сойдет с рук ... Мне нужен анонимный доступ только к обработчику. Я попытался разместить файл web.config в том же каталоге, что и обработчик, и разрешить анонимный доступ к нему, но это все еще не работает.


person chatterjb    schedule 07.06.2011    source источник
comment
Вы когда-нибудь находили решение этой проблемы? У меня есть веб-часть, которая указывает на обработчик в каталоге макетов. Он отлично работает в нашей песочнице, потому что позволяет анонимный доступ, но мы не можем разрешить анонимный доступ на нашем производственном сервере.   -  person Mungoid    schedule 18.11.2011


Ответы (1)


У меня была такая же ситуация. Вы заявили, что вам «не сойдет с рук [...] разрешение анонимного доступа к самому сайту», поэтому я не уверен, сработает ли мое решение для вас, но вот оно:

  1. Включите анонимный доступ к SharePoint (шаги 1–6 из http://www.topsharepoint.com/enable-anonymous-access-in-sharepoint-2010)
  2. В диспетчере IIS включите анонимную аутентификацию для подпапки макетов, содержащей ваш файл ashx. (Похоже, что SharePoint по-прежнему требует проверки подлинности для страниц приложения, поскольку они происходят от LayoutsPageBase).

В качестве альтернативы, на своем сайте разработчика я включил анонимный доступ к SharePoint, включил анонимный доступ из диспетчера IIS, а затем создал 2 правила web.config.

<system.web>
    <authorization>
        <deny users="?" />
    </authorization>
    ...
</system.web>
<location path="_layouts/Folder/Anonymous.ashx">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>

Однако я считаю, что эта версия слишком усложнена. Я предпочитаю первый вариант.

person Matthew D    schedule 20.10.2011