在程序集中编写以下代码:
if (HttpContext.Current.Server != null)
{
  System.IO.Directory.Move(
    HttpContext.Current.Server.MapPath("~/oldPath"), 
    HttpContext.Current.Server.MapPath("~/newPath"));
}
编译成DLL并复制到站点的bin目录下,站点中有aspx页面对以上程序集的相关方法调用后出现
System.IO.IOException异常:
“对路径disk:\oldPath的访问被拒绝。”
oldPath和newPath并未重复,newPath的路径在执行Move之前并不存在,newPath和oldPath均为合格路径且在同一盘符下。
在VS2005+WINXP环境下调试可以正常执行并无任何异常。WIN2003 SERVER+IIS6下则出现异常,IIS中启用匿名访问,未经其它特殊设置。
请各位高手能告诉我解决方法或者给出相关的网络资源链接,十分感谢!

解决方案 »

  1.   

    in Windows 2003, ASP.NET runs as Network Service account, make sure you give this account or IIS_WPG group read or write access to your folders
      

  2.   

    非常感谢思归老大,我在IIS6的帮助文档中看ASP.NET数据流关于Forms身份验证的方案中,如果启用了匿名登录和Forms身份验证模式时,受保护资源访问的验证和授权是应用程序来控制,是否因为程序集的运行权限和资源访问并不是同一身份?
      

  3.   

    结帖:
    我的理解是无论Windows认证还是Forms认证,在对受保护资源认证授权通过后,运行身份会移交给ASP.NET工作进程的身份,在未启用模拟的情况下,XP是ASPNET用户,而2003SERVER是NETWORK SERVICE。