ASP.net访问网络映射驱动器的问题(急)
问题:我用ASP.net写了一个页面代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="_Default" %>
<%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
Namespace="System.Web.UI" TagPrefix="asp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title></head>
<body bgcolor="#AFE9F5">
<form id="form1" runat="server">
<asp:Button ID="btnDM" runat="server" Text="复制" Font-Size="Medium"
Width="60px" onclick="btnDM_Click" />
</form>
</body>
</html>
后台代码:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnDM_Click(object sender, EventArgs e)
{
File.Copy(AppDomain.CurrentDomain.BaseDirectory + @"test.dat" , @"j:\test.dat",true );
}
}
主要目的很简单,点击按钮后将网站目录下的test.dat文件复制到Q盘(注:j盘为网络映射路径),以上代码在vs2008中调试正常,但是将网页放到iis目录下则无法复制,提示:找不到路径"j:\test.dat"的一部分.然后将File.Copy(AppDomain.CurrentDomain.BaseDirectory + @"test.dat" , @"j:\test.dat",true );改为
:File.Copy(AppDomain.CurrentDomain.BaseDirectory + @"test.dat" , @"\\fileServer\share\test.dat",true );同样是调试成功,放到iis下运行则出错,无法复制;又将代码改为:
File.Copy(AppDomain.CurrentDomain.BaseDirectory + @"test.dat" , @"\\172.22.1.11\share\test.dat",true );还是调试通过,放到iis下运行则出错,无法复制;
经过多番搜索,应该是权限问题,在web.config文件中启用身份模拟:
<identity impersonate="true"/>
iis下运行错误:
对路径“\\172.22.1.11\share\test.dat”的访问被拒绝。
ASP.NET 未被授权访问所请求的资源。请考虑授予 ASP.NET 请求标识访问此资源的权
再修改为:<identity impersonate="true" userName="LocalUser" password="123456"/>,其中LocalUser为本机用户,映射网络驱动器就是该用户的操作,同样是iis下运行错误.
再修改为:<identity impersonate="true" userName="netUser" password="123456"/>,其中netUser为映射网络硬盘时用到的帐号和密码,同样是iis下运行错误.
另外要说明的是:我甚至已经将iis默认的IUSR_MyCmp用户添加到管理员组了,依然是调试成功,实际iis下运行错误.
个人感觉这个就是权限问题,曾经在网上看到解决办法:在172.22.1.11机器和运行iis的本机都建立同样的帐号密码,假定为:usr,123456,然后再启用身份模拟
:<identity impersonate="true" userName="usr" password="123456"/>,
由于我实际中要将test.dat同时复制到多个网络驱动器,肯定不可能按照这种方法在每个目标网络驱动器上都建立统一的用户,因此该方法是否可行我并没有测试.恳请大侠帮忙解答,谢谢. --------------------编程问答-------------------- 你的"test.dat"属性是不是只读?everyone用户是不是有访问权限? --------------------编程问答-------------------- 学习一下 --------------------编程问答-------------------- 1、权限是否足够,加everyone,完全控制权限。
2、路径换成相对路径。
如:../myweb/
或~/myweb/
--------------------编程问答-------------------- http://dotnet.aspx.cc/article/00a69edd-2372-4c9e-940c-5f2003a91b61/read.aspxhttp://dotnet.aspx.cc/file/Multi-Files-Upload-With-Preview.aspx --------------------编程问答-------------------- 学习下 吧 好像还没做过 这个 --------------------编程问答--------------------
非只读属性 --------------------编程问答--------------------
1、哪个账户加anynoe权限?
2、貌似这个答案不是我要的,现在是目标路径找不到,这个怎么写成相对路径啊 --------------------编程问答--------------------
两个链接都打不开
谢谢关注,继续等人解答…… --------------------编程问答-------------------- 帮楼主顶上去 --------------------编程问答-------------------- 多半是权限问题,感觉你需要添加写权限,也就是说aspnet账户加入写权限:文件夹上右击-"共享和安全",添加aspnet用户,勾选写入权限。看看行不行? --------------------编程问答-------------------- 不行,对于映射的网络驱动器,根本没有"共享和安全"这个选项的。 --------------------编程问答-------------------- 关注一下。。 --------------------编程问答-------------------- 帮顶,希望公布下解决方法 --------------------编程问答-------------------- 没解决 --------------------编程问答-------------------- 请问解决了吗? --------------------编程问答-------------------- 没权限。。。 --------------------编程问答-------------------- 给iis_iuser权限。
补充:.NET技术 , ASP.NET