Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 限制用户从项目文件夹dot.net打开XML文件_C#_Asp.net_Visual Studio_Iis - Fatal编程技术网

C# 限制用户从项目文件夹dot.net打开XML文件

C# 限制用户从项目文件夹dot.net打开XML文件,c#,asp.net,visual-studio,iis,C#,Asp.net,Visual Studio,Iis,我的解决方案文件中有一个资源文件夹,其中包含xml文件。它可供远程、未经验证的Internet用户使用,我想拒绝所有用户的访问。如果他们知道文件名,可以通过url访问 例如:example.com/common/resources/test.xml 因此,我想拒绝访问该文件夹或将其移动到web服务器不作为内容的目录 我正在使用VisualStudio2003和IIS。有谁能帮我限制所有用户查看该文件吗?我想你回答了你自己的问题-将其移动到IIS不提供服务的目录。根据您的描述,这听起来是最简单的解

我的解决方案文件中有一个资源文件夹,其中包含xml文件。它可供远程、未经验证的Internet用户使用,我想拒绝所有用户的访问。如果他们知道文件名,可以通过url访问

例如:example.com/common/resources/test.xml

因此,我想拒绝访问该文件夹或将其移动到web服务器不作为内容的目录


我正在使用VisualStudio2003和IIS。有谁能帮我限制所有用户查看该文件吗?

我想你回答了你自己的问题-将其移动到IIS不提供服务的目录。根据您的描述,这听起来是最简单的解决方案


您的另一个选项是启用对该文件夹的身份验证。

您可以将扩展名更改为.config以方便修复。IIS不支持服务器.config文件


我确信您可以将该文件夹的权限设置为仅允许ASP.Net访问。

您可以将IIS设置为不提供xml文件。但这将阻止所有xml文件,而不仅仅是资源文件夹中的文件

或者,您可以将web.config文件添加到resources文件夹,并设置访问权限,以便不允许任何用户从该文件夹下载文件。像这样的方法应该会奏效:

<authorization>
   <deny users="*"/>
</authorization>

如果文件仅由代码使用,则可以将这些文件的生成操作更改为嵌入资源。然后,当您部署应用程序时,这些文件将作为资源添加到DLL文件本身中,这样您就不会再在web服务器上使用它们了。要访问它们,您可以使用System.Reflection.Assembly.GetExecutionGassembly.GetManifestResourceStream方法。

问题是,默认情况下,IIS将提供xml和其他静态内容,而不必告诉ASP.NET。因此,ASP.NET中的身份验证被完全绕过

因此,一种解决方案是强制IIS调用ASP.NET来处理xml内容。这样,您就可以获得ASP.NET身份验证的好处,并使用本线程中讨论的web.config文件来控制访问

很抱歉,这些说明是针对IIS 5和ASP.NET 2.0的,但我想您可以在其他版本的IIS和ASP.NET中找到相应的说明。在IIS中,选择网站的属性,然后选择配置,然后选择添加以添加新映射。选择位于例如Windows\Microsoft.Net\Framework\v2.0.5072中的aspnet\u asapi.dll的路径。将.xml放在扩展框中。选择所有动词,然后确定


希望这能有所帮助。

您可以将XML存储在App_数据文件夹中,因为IIS默认情况下不允许访问它。

我尝试了您的方法。但它仍然在资源文件夹下打开xml文件,代码是:这很奇怪。是否已将这些行添加到项目根文件夹的web.config中?尝试将新的web.config添加到resources文件夹,并插入授权元素。IIS可能正在为该文件提供服务,而没有给ASP.NET进程使用web.config的机会。配置设置可能会被配置为执行其他操作,这也不是一个最佳的解决方案。完美的答案,因此我的+1这正是App_Data folder的使用案例。