我在带有IIS 7的Windows 8 R2服务器上运行ASP.NET 4应用程序。该应用程序在子目录中动态创建HTML文件" Reports"在应用程序的根目录中。我试图通过对web.config文件进行以下更改来使用现有的Forms身份验证来保护这些文件:
将这四行添加到<compilation>
部分:
<buildProviders><br />
<add extension=".html" type="System.Web.Compilation.PageBuildProvider" /> <br />
<add extension=".htm" type="System.Web.Compilation.PageBuildProvider" /> <br />
</buildProviders> <br />
将这四行添加到<system.web>
部分:
<httpHandlers><br />
<add verb="*" path="*.htm" type="System.Web.UI.PageHandlerFactory" /><br />
<add verb="*" path="*.html" type="System.Web.UI.PageHandlerFactory" /><br />
</httpHandlers><br />
尝试以下两个
"<handlers>" in the "<system.webServer>" section:<br />
<handlers><br />
<add name="HTML" path="*.html" verb="GET, HEAD, POST, DEBUG" type="System.Web.UI.PageHandlerFactory" resourceType="Unspecified" requireAccess="Script" /><br />
<add name="HTM" path="*.htm" verb="GET, HEAD, POST, DEBUG" type="System.Web.UI.PageHandlerFactory" resourceType="Unspecified" requireAccess="Script" /><br />
</handlers><br />
和
<handlers><br />
<add name="HtmlHandler-Integrated" path="*.html" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" requireAccess="Script" preCondition="integratedMode" modules="ManagedPipelineHandler" /><br />
<add name="HtmHandler-Integrated" path="*.htm" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" requireAccess="Script" preCondition="integratedMode" modules="ManagedPipelineHandler" /><br />
</handlers><br /><br />
最后,我添加了<location>
标记来指定&#34;基于角色的&#34;文件夹的安全性:
<br />
<location path="Reports"><br />
<system.web><br />
<authorization><br />
<allow roles="Administrator, Base User" /><br />
<deny users="*" /><br />
</authorization><br />
</system.web><br />
</location><br /><br />
这些设置适用于未经身份验证的用户,但会产生错误&#34;文件&#39; .... htm&#39;没有预先编译,也不能被要求。&#34;对于从应用程序动态创建的HTML文件。
需要进行哪些其他更改才能保护这些&#34; html&#34;来自未经身份验证的用户的文件?
谢谢!