我说错误
异常详细信息:System.UnauthorizedAccessException:访问 路径' E:\ web \ aawebapp \ Content \ events \ events.json'被拒绝。
ASP.NET无权访问所请求的资源。考虑 授予对ASP.NET请求的资源访问权限 身份。 ASP.NET具有基本进程标识(通常是 IIS 5上的{MACHINE} \ ASPNET或IIS 6和IIS 7上的网络服务,以及 IIS 7.5上配置的应用程序池标识,如果使用的话 该申请不是冒充。如果申请是 冒充通过,身份将是 匿名用户(通常是IUSR_MACHINENAME)或经过身份验证的用户 请求用户。
要授予对文件的ASP.NET访问权限,请右键单击“文件”中的文件 资源管理器,选择"属性"并选择“安全”选项卡。点击"添加" 添加适当的用户或组。突出显示ASP.NET帐户, 并选中所需访问的框。
当我尝试执行以下操作时,在控制器中发生这种情况。
string eventspathway =
HostingEnvironment.MapPath(@"~/Content/events/events.json");
System.IO.File.WriteAllText(eventspathway, newtext);
当我在localhost / debug上运行时,这样可以正常工作,但在webdeployed时不起作用,从而排除了上述所有错误。
答案 0 :(得分:0)
这里有什么难以理解的?这个例外意味着它所说的。
您的网络应用程序在IIS工作进程(w3wp.exe - " 全球范围的Web工作进程"得到它?)中运行,称为应用程序池(应用程序池) )。该流程在帐户下运行。在这些凭据下运行的任何进程都无法读取(或写入)缺少先决条件权限的路径。
您(或您的系统管理员)需要授予应用程序池标识,在该标识下您的应用程序正在运行足够的权限来执行它需要执行的操作。或者,您需要找到一个将数据停放在应用池标识具有足够权限的位置。
另一种选择 - 不建议用于生产系统! - 将在本地系统帐户下运行应用程序池。
有关详细信息,请参阅