我的解决方案文件中有一个“resource”文件夹,其中包含xml文件。它可供远程,未经身份验证的Internet用户使用,我想拒绝所有用户访问。如果他们知道文件名,则可以通过URL访问它。
例如:example.com/common/resources/test.xml
因此,我想拒绝访问该文件夹或将其移动到Web服务器未作为内容提供的目录。
我正在使用visual studio 2003和IIS。任何人都可以帮我限制所有用户查看文件吗?
答案 0 :(得分:5)
您可以将XML存储在App_Data文件夹中,因为默认情况下IIS将禁止访问它。
答案 1 :(得分:3)
如果文件仅由您的代码使用,那么您可以将这些文件的“构建操作”更改为“嵌入式资源”。然后,当您部署应用程序时,这些文件将作为资源添加到DLL文件本身中,因此您将不再在Web服务器上拥有它们。要访问它们,您可以使用System.Reflection.Assembly.GetExecutingAssembly()。GetManifestResourceStream方法。
答案 2 :(得分:2)
问题是IIS默认情况下会提供xml和其他静态内容,甚至不会告诉ASP.NET。因此,完全绕过了ASP.NET中的身份验证。
因此,一种解决方案是强制IIS调用ASP.NET来处理xml内容。这样,您就可以获得ASP.NET身份验证的好处,并使用web.config文件(如本主题中所述)来控制访问。
很抱歉这些说明适用于IIS 5和ASP.NET 2.0,但我想你可以在其他版本的IIS& ASP.NET。在IIS中,为您的网站选择“属性”,然后选择“配置”,再选择“添加”以添加新映射。选择生活在例如的aspnet_asapi.dll的路径。的Windows \ Microsoft.Net \框架\ v2.0.5072。将.xml放在“扩展名”框中。选择所有动词,然后确定。
希望有所帮助。
答案 3 :(得分:0)
我认为您回答了自己的问题 - 将其移至IIS未提供的目录中。根据您的描述,这听起来像是最简单的解决方案。
您的另一个选择是针对该文件夹启用身份验证。
答案 4 :(得分:0)
您可以将扩展名更改为.config,以便轻松修复。 IIS不会服务器.config文件。
我确信您可以将该文件夹的权限设置为仅允许ASP.Net访问。
答案 5 :(得分:0)
您可以将IIS设置为不提供xml文件。但这将阻止所有xml文件,而不仅仅是资源文件夹中的文件。
或者,您可以将web.config文件添加到resources文件夹并设置访问权限,以便不允许任何用户从该文件夹下载文件。这样的事情应该有效:
<authorization>
<deny users="*"/>
</authorization>