为什么Application_Start中的文件创建失败?

时间:2014-01-29 15:46:54

标签: asp.net

我有一些代码试图在我的网站的子目录中创建和写入日志文件(如下所示)。如果我在 Default.aspx Page_Load()事件中对此代码进行第一次调用,则每次都可以正常工作。但是,如果我在 Global.asax Application_Start()事件中第一次调用此代码,我会从.NET IO库中获得访问被拒绝的异常,即使异常消息中显示的路径也是如此是对的。

有人遇到过这样的事吗?就好像从 Application_Start()运行的代码比以后运行的代码具有更有限的权限集。

亲切的祝愿〜帕特里克

using( StreamWriter writer = new StreamWriter( FullPathAndNameData, true ) )
{
    string logEntry = DateTime.Now.ToString() + ": " + formattedMessage;
    writer.WriteLine( logEntry );
    writer.Flush();
}

1 个答案:

答案 0 :(得分:0)

据我所知,Application_Start没有特别许可。

我唯一能想到的是,如果你在Application_Start中移动代码,文件路径就会移到Web应用程序之外,并且需要权限。

您可以尝试使用HttpRuntime.AppDomainAppPath

public class Global : HttpApplication
{
    private void Application_Start(object sender, EventArgs e)
    {
        var fullPathAndNameData = string.Format("{0}App_Data\\Log.txt",
            HttpRuntime.AppDomainAppPath);

        using (var writer = new StreamWriter(fullPathAndNameData, true))
        {
            string logEntry = DateTime.Now + ": " + "Inside Application_Start";
            writer.WriteLine(logEntry);
            writer.Flush();
        }
    }
}