在对源文件中的某些数据进行某些更改后,我尝试将文件从一个文件写入临时文件。 在我将此逻辑提取到其自己的功能中之前,此方法一直有效。 运行一些测试后,我注意到只有第一行被保存到我指定位置的文件中。 调试后,从第二次调用此函数开始,我便能看到文件位置在完全不同的位置。 我有两个问题, ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
软件: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();
}
}
当我运行代码时,浏览器如下所示
但是,当我关闭浏览器以停止执行时,没有创建test.txt
代码看起来正确,为什么这不起作用?
您是否在寻找Session_Start和End事件处理程序?
当浏览器关闭时,应用程序不会结束(并且Application_End事件处理程序不会被调用)。 必须告知应用程序池以温和的方式结束。 在一段时间不活动后,应用程序池回收或关闭时,会发生这种情况。
因为在您的应用程序的应用程序池下运行的身份可能没有目录C:\\ CodeLocal的写权限。 尝试为此文件夹的应用程序池标识赋予写权限。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.