如何使用 ASP.NET 访问网络文件






3.45/5 (20投票s)
2007 年 8 月 1 日
4分钟阅读

250200
在这里我将展示用户如何访问存储在其他服务器上的网络文件和文件夹。
引言
在此我将展示如何使用 ASP.NET 访问网络文件和文件夹
背景
当我们开发处理文件和文件夹的 Web 应用程序时,我们的 Web 服务器可能无法很好地管理文件和文件夹,因此在这种情况下,我们可以使用两个不同的服务器来妥善管理应用程序。因此,我们需要一个 Web 服务器来托管我们的 Web 应用程序,一个文件服务器来管理文件和文件夹。
要在 Web 应用程序中实现这种情况,有许多方法可以做到。在这里,我将展示如何通过同步两台计算机之间的 IUSR 帐户来实现。我们可以使用 Asp.net Impersonate。我们可以通过不同的方式实现 asp.net impersonate,即通过编程方式或使用 web.config 文件。
同步两台计算机之间的 IUSR 帐户
以下是您必须遵循才能实现这一目标的步骤列表。
-
设置 IIS 以允许我们使用网络文件和文件夹
-
在 Asp.net 中启用 Impersonate。
要设置 IIS,我们必须在两台不同的服务器上执行操作。
我们举个例子
我们有两台服务器,一台是我们的 Web 服务器,一台是我们的文件服务器。
例如:FILESERVER 和 WEBSERVER
我们将文件存储在 FILESERVER 上,并将我们的应用程序托管在 WEBSERVER 的 IIS 上
现在,首先,我们将设置 IUSR_MACHINENAME 用户的密码
以下是步骤:
转到控制面板 > 管理工具 > 计算机管理 > 在计算机管理中,展开“本地用户和组”树,然后单击“用户”,这样您就可以在右侧面板中看到用户列表,
在右侧用户列表中,选择 IUSR_MACHINENAME,右键单击并单击“设置密码……”
您将看到类似这样的窗口
因此,将出现一个类似这样的弹出窗口
现在单击继续
现在为 IUSR_MACHINENAME 用户设置密码。例如:IUSR_WEBSERVER 计算机
现在打开IIS,右键单击您的应用程序的虚拟目录。例如:“XYZ”目录名称。单击“属性”,将出现一个弹出窗口,现在转到“目录安全性”选项卡。在“匿名访问和身份验证控制”下,单击“编辑”按钮
您将看到类似这样的弹出窗口
现在,仅取消选中“允许 IIS 控制密码”复选框,然后键入您在前面步骤中设置的密码。对于用户 IUSR_WEBSERVER
单击确定并应用设置。
配置文件服务器。
请遵循以下步骤
首先,您必须创建与 WEBSERVER 上的名称相同的新的 IUSR 用户
因此,在 FILSERVER 上创建一个新用户,用户名为IUSR_WEBSERVER。
为此,请遵循以下步骤:
打开控制面板 > 管理工具 > 计算机管理 > 单击本地用户和组
选择“用户”文件夹 > 将出现现有用户列表。
右键单击空白区域,然后单击“新建用户”
输入与 WEBSERVER 上的相同的用户名。例如:IUSR_WEBSERVER
同时输入与您为 Web 服务器 PC 的“IUSR_WEBSERVER”用户设置的相同的密码。
取消选中“用户下次登录时必须更改密码”复选框,然后选中“密码永不过期”
现在,在两台服务器(文件和 Web)上,都存在具有相同密码的相同用户。
现在找到要从文件服务器为网络用户存储或检索文件的目录
例如:D:\TempFolder\文件列表
因此,共享“TempFolder”并为 IUSR_WEBSERVER 用户设置权限。
如果 IUSR_WEBSERVER 用户不存在于“组名和用户名”中,则根据要求添加并设置适当的权限。
因此,现在我们在 Fileserver 上创建了 IWEBSERVER 用户,并且还为网络文件夹设置了权限。
在 ASP.NET 中启用模拟
我们可以根据我们的要求使用不同的方式来实现模拟。
要在 asp.net 中启用模拟,您必须在此应用程序的 Web.config 文件中包含一个 **<identity>** 标记,并将 **impersonate** 属性设置为 **true**。
<system.web>
<identity impersonate="true"/>
</system.web>
但上面的语法仅适用于“IIS 身份验证帐户或用户”
如果我们想为所有请求实现特定用户的模拟,则在 web.config 文件中输入以下内容:
<system.web>
<identity impersonate="true" userName="IUSR_WEBSERVER" password="password" /> </system.web>
在我们的例子中,我们对所有请求都使用特定用户,因此我们将用户名输入为“IUSR_WEBSERVER”和密码
我们也可以通过代码来实现模拟,但我在这里不详细介绍,您可以单击此链接 http://support.microsoft.com/kb/306158 查看关于“如何通过代码实现模拟”的完整详细信息。
要访问网络文件,我们不能映射网络驱动器并使用它,而是必须使用 UNC(通用命名约定)。
因此,像这样使用:“\\Fileserver\FolderName\Files\File1.txt”
而不是 z:\Folder\Files\file1.txt
以下是检索网络文件并在网页上显示的 C# 代码。
Dim strPath As String = "file://FILESERVER/TempFolder/FileName.pdf">\\FILESERVER\TempFolder\FileName.pdf
If FileIO.FileSystem.FileExists(Trim(strPath)) Then
Response.WriteFile((strappath))
Else
'显示“文件未找到”消息
End If
结论
因此,通过使用本文,我们可以访问网络文件和文件夹,还有其他方法可以实现此功能,但此方法取决于用户的选择。
希望本文能帮到您……如有任何问题或疑问,请随时发帖。