首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C# 小弟我想要在网页下上载图片,但是当运行到System.IO.File.Create(savePath);时,出错:对路径“D:\”的访问被拒绝

2013-01-28 
C# 我想要在网页上下载图片,但是当运行到System.IO.File.Create(savePath)时,出错:对路径“D:\”的访问被拒

C# 我想要在网页上下载图片,但是当运行到System.IO.File.Create(savePath);时,出错:对路径“D:\”的访问被拒绝。
 savePath = "D:\";
if (File.Exists(savePath)) File.Delete(savePath);
            outStream = System.IO.File.Create(savePath);
            inStream = response.GetResponseStream();
具体显示错误:

异常详细信息: System.UnauthorizedAccessException: 对路径“D:\”的访问被拒绝。

ASP.NET 未被授权访问所请求的资源。请考虑授予 ASP.NET 请求标识访问此资源的权限。ASP.NET 有一个在应用程序没有模拟时使用的基进程标识(通常,在 IIS 5 上为 {MACHINE}\ASPNET,在 IIS 6 上为网络服务)。如果应用程序正在通过 <identity impersonate="true"/> 模拟,则标识将为匿名用户(通常为 IUSR_MACHINENAME)或经过身份验证的请求用户。

要将 ASP.NET 访问权限授予某个文件,请在资源管理器中右击该文件,选择“属性”,然后选择“安全”选项卡。单击“添加”添加适当的用户或组。突出显示 ASP.NET 帐户,选中所需访问权限对应的框。

源错误:


行 165:        {
行 166:            if (File.Exists(savePath)) File.Delete(savePath);
行 167:            outStream = System.IO.File.Create(savePath);
行 168:            inStream = response.GetResponseStream();
行 169:            int l;


源文件: d:\GXX-WORKDISK\project\zzqz\download.aspx.cs    行: 167

堆栈跟踪:


[UnauthorizedAccessException: 对路径“D:\”的访问被拒绝。]
   System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) +7717551
   System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy) +1162
   System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) +65
   System.IO.File.Create(String path) +37
   download.SaveBinaryFile(WebResponse response, String savePath) in d:\GXX-WORKDISK\project\zzqz\download.aspx.cs:167
   download.DownloadPicture(String picUrl, String savePath, Int32 timeOut) in d:\GXX-WORKDISK\project\zzqz\download.aspx.cs:149
   download.Page_Load(Object sender, EventArgs e) in d:\GXX-WORKDISK\project\zzqz\download.aspx.cs:51
   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
   System.EventHandler.Invoke(Object sender, EventArgs e) +0
   System.Web.UI.Control.OnLoad(EventArgs e) +99
   System.Web.UI.Control.LoadRecursive() +50
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627


求解啊!!!!!!

[解决办法]
检查一下是不是有管理员权限
------解决方案--------------------


IIS的权限?
[解决办法]
是NTFS的权限问题,IIS的帐户没有权限在D盘根目录写入数据。
如果是临时文件,建议把文件保存到临时目录里去,可以用System.IO.Path.GetTempPath方法得到临时目录的路径。如果不是临时文件,建议专门在服务器上创建一个专用的文件夹,并且使IUSR_matchinename或NETWORK_SERVICE帐号对这个文件夹有写入的权限,然后把文件保存到这个文件里。
最后还有一个不推荐的办法,就是在IIS中提升匿名用户的访问权限,让它可以在D盘根目录写入数据,或者直接给D盘根目录添加上述用户的权限,当然,这是很不安全的。
[解决办法]
权限的问题别写在根目录,还有就是可以把asp.net账号添加到管理员组里。
[解决办法]
savePath="D:\\a.jpg"

热点排行