在托管应用程序

时间:2015-10-26 09:49:39

标签: c# asp.net .net asp.net-mvc iis

我们创建了一个C#MVC应用程序。我们已经成功托管了这个网站,我们能够正确运行。问题是当我们使用log4net创建日志文件到我们的errorLogs文件夹中时,该文件夹存在于" .. inetpub / mysite / errorLogs"。但它不允许在那里写文件。

此外,我尝试过简单的文件写入:    System.IO.File.AppendAllText(sFilePath, "test content.");

at path" .. inetpub / mysite / App_Data / errorLogs"。

但没有任何事情发生。在查看权限时,我们拥有App_Data文件夹的所有权限,但它会抛出错误:

  

' /'中的服务器错误应用

     

访问路径' ... \ inetpub \ mysite \ App_Data \ Logs \ 20151026'是   拒绝。

     

描述:执行期间发生了未处理的异常   当前的网络请求。请查看堆栈跟踪了解更多信息   有关错误的信息以及它在代码中的起源。

     

异常详细信息:System.UnauthorizedAccessException:访问   路径' ... \ inetpub \ mysite \ App_Data \ Logs \ 20151026'被拒绝。

     

ASP.NET无权访问所请求的资源。考虑   授予对ASP.NET请求的资源访问权限   身份。 ASP.NET具有基本进程标识(通常是   IIS 5上的{MACHINE} \ ASPNET或IIS 6和IIS 7上的网络服务,以及   IIS 7.5上配置的应用程序池标识,如果使用的话   该申请不是冒充。如果申请是   冒充通过,身份将是   匿名用户(通常是IUSR_MACHINENAME)或经过身份验证的用户   请求用户。

     

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

还有其他方法可以为我的网站编写日志记录吗?

2 个答案:

答案 0 :(得分:0)

尝试将IIS_IUSRS添加到包含日志的权限文件夹中。

答案 1 :(得分:0)

在我的情况下,我希望在应用程序池上设置的用户是拥有用File.AppendAllText()编写的文件的用户。

但是,如果已设置,则使用Connect As的用户。

在我的情况下,主网站是作为特定用户连接的,同一个用户在应用程序池上,但我有一个虚拟应用程序使用相同的应用程序池,但是作为Pass Through Authentication连接。因此,虚拟应用程序编写的任何文件的所有者都是名为IUSR的本地用户。