我在网上看到了大量有关如何通过继承 UnsecuredLayoutsPageBase 等来允许匿名访问特定 SharePoint 应用程序页面的信息。
如何为位于布局目录中的 ashx 处理程序实现相同的效果?默认情况下,SP 将需要身份验证才能访问处理程序。我可以通过允许匿名访问网站本身来解决这个问题,但我无法摆脱这个......我只需要匿名访问处理程序。我尝试将 web.config 文件粘贴在与处理程序相同的目录中并允许匿名访问,但这仍然不起作用。
最佳答案
我也遇到过同样的情况。您表示您“无法摆脱[...]允许匿名访问网站本身”,所以我不确定我的解决方案是否适合您,但它是:
- 启用对 SharePoint 的匿名访问(http://www.topsharepoint.com/enable-anonymous-access-in-sharepoint-2010 的步骤 1 - 6)
- 在 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>
但是,我认为该版本过于复杂。我更喜欢第一个选项。
关于SharePoint 2010 ashx 处理程序匿名访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6268063/