我有一些代码试图在我的网站的子目录中创建和写入日志文件(如下所示)。如果我在 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();
}
答案 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();
}
}
}