好吧,我不知所措。我到处寻找,但我仍然遇到错误。我有一个文件夹,里面有几个pdf文件。该文件夹名为" docs"它位于我项目的根目录中。我使用以下代码将web.config文件放在该文件夹中...
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
我还尝试使用以下代码将代码放在我的根web.config文件中......
<location path="/docs">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
这两个代码块都会产生500服务器错误。不幸的是,由于我在共享托管上,我无法访问详细的服务器错误。有什么想法吗?
修改:抱歉......这是我在凌晨1点发布问题所得到的。我想保护文件夹,以便只有登录和授权的用户才能访问它并下载文件。
答案 0 :(得分:3)
我遇到了类似的问题(see here)。解决方案是将web.config添加到目录中,还要向其添加处理程序指令。这对我有用。
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
<system.webServer>
<handlers>
<add name="PDFHandler" verb="*"
path="*.pdf"
type="System.Web.StaticFileHandler"
resourceType="Unspecified" />
</handlers>
</system.webServer>
</configuration>
答案 1 :(得分:1)
我想保护文件夹,以便只记录那些用户 in和authorized可以访问它并下载文件。
如果您只想将下载限制为已登录和已通过身份验证的用户,则GlenBee’s solution是迄今为止最简单,最有效的用户。
如果您需要按角色和/或声明限制访问权限,则有两种选择:
答案 2 :(得分:0)
我正在做同样的事情,这是我放在文件夹中的web.config的内容:
<configuration>
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</configuration>
错误:
我做的一个简单的解决方案是启用运行状况监控并让它向我发送错误,这是在我的根web.config中:
<system.web>
<healthMonitoring enabled="true">
<eventMappings>
<clear/>
<!-- Log ALL error events -->
<add name="All Errors" type="System.Web.Management.WebBaseErrorEvent, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" startEventCode="0" endEventCode="2147483647"/>
<!-- Log application startup/shutdown events -->
<!--<add name="Application Events" type="System.Web.Management.WebApplicationLifetimeEvent" startEventCode="0" endEventCode="2147483647"/>-->
</eventMappings>
<providers>
<clear/>
<!-- Provide any customized SqlWebEventProvider information here (such as a different connection string name value -->
<add name="SqlWebEventProvider" connectionStringName="ConnectionString" maxEventDetailsLength="1073741823" buffer="false" type="System.Web.Management.SqlWebEventProvider"/>
<add name="EmailWebEventProvider" buffer="false" type="System.Web.Management.SimpleMailWebEventProvider" from="website@example.com" to="webmaster@example.com" subjectPrefix="Website Error: "/>
</providers>
<rules>
<clear/>
<add name="All Errors Default" eventName="All Errors" provider="SqlWebEventProvider" profile="Default" minInstances="1" maxLimit="Infinite" minInterval="00:00:00"/>
<!--<add name="Application Events Default" eventName="Application Events" provider="SqlWebEventProvider" profile="Default" minInstances="1" maxLimit="Infinite" minInterval="00:00:00"/>-->
<add name="All Errors To E-Mail" eventName="All Errors" provider="EmailWebEventProvider" profile="Default" minInstances="1" maxLimit="Infinite" minInterval="00:00:00"/>
</rules>
</healthMonitoring>
</system.web>
<system.net>
<mailSettings>
<smtp from="no_reply@example.com">
<network host="mail.example.com" userName="website@example.com" password="P@$$w0rd"/>
</smtp>
</mailSettings>
</system.net>