StreamWriter不会创建新文件

时间:2015-01-14 20:14:26

标签: c# asp.net streamwriter

软件:Visual Web Developer 2008 Express Edition 框架:ASP.NET 3.5 语言:C# 书:编程ASP.NET 3.5

我正在尝试本书中的代码,并且它没有按预期创建C:\ CodeLocal \ test.txt

global.asax

<%@ Application Language="C#" %>
<%@ Import Namespace="System.IO" %>


<script runat="server">

    void Application_Start(object sender, EventArgs e) 
    {
        // Code that runs on application startup
        Application["strStartMsg"] = "The application has started.";
        string[] Books = {"SciFi","Fiction","Computers","History","Religion"};
        Application["arBooks"] = Books;
        WriteFile("Application Starting");
    }

    void Application_End(object sender, EventArgs e) 
    {
        //  Code that runs on application shutdown
        Application["strEndMsg"] = "The application is ending.";
        WriteFile("Application Ending");
    }

    void WriteFile(string strText) {
        StreamWriter writer = new StreamWriter(@"C:\CodeLocal\test.txt",true);
        string str;
        str = DateTime.Now.ToString() + " " + strText;
        writer.WriteLine(str);
        writer.Close();
    }

</script>

Demo.aspx.cs

public partial class ApplicationStateDemo : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        StringBuilder sb = new StringBuilder();
        sb.AppendFormat("{0}<br/>",(string)Application["strStartMsg"]);
        sb.AppendFormat("{0}<br/>", (string)Application["strEndMsg"]);

        string[] arTest = (string[])Application["arBooks"];
        sb.AppendFormat("{0}<br/>",arTest[1].ToString());

        lblText.Text = sb.ToString();
    }
}

当我运行代码时,我的浏览器看起来像这样

enter image description here

但是当我关闭浏览器以停止执行时,没有创建test.txt

代码看起来正确,为什么这不起作用?

2 个答案:

答案 0 :(得分:3)

您在寻找Session_Start和End事件处理程序吗?

当浏览器关闭时,应用程序不会结束(并且不会调用Application_End事件处理程序)。必须告诉应用程序池以优雅的方式结束。当应用程序池在一段时间不活动后循环或关闭时会发生这种情况。

答案 1 :(得分:2)

因为正在运行应用程序的应用程序池的标识可能没有对目录C:\ CodeLocal的写入权限。尝试为此文件夹上的应用程序池标识提供写入权限。

相关问题