2015-01-14 5 views
0

Программное обеспечение: Visual Web Developer 2008 Express Edition Framework: ASP.NET 3.5 Язык: C# Книга: Программирование ASP.NET 3.5StreamWriter не создает новый файл

Я пытаюсь код из книги, и он не создает 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 не создано

Код выглядит правильно, почему это не работает?

+4

Используйте отладчик, чтобы выполнить код. Удалось ли написать письмо? – usr

+2

Вы уверены, что имеете правильные права на запись? – Greg

+0

@Greg, когда я запускаю VB в качестве администратора, он создает test.txt и записывает «запуск приложения» при запуске программы. Однако, когда я останавливаю программу, она не записывает «Завершение приложения». Что еще делать? – Glowie

ответ

3

Вы ищете обработчики событий Session_Start и End?

Приложение не заканчивается (и обработчик события Application_End не вызван), когда браузер закрыт. Прикладному пулу должно быть сказано, чтобы он смирился. Это происходит, когда пул приложений перерабатывает или отключается после периода бездействия.

+0

Я немного проверю файл – Glowie

+0

Если вы используете это веб-приложение локально и не размещены в IIS, вы можете остановить процесс с панели задач. – sudheeshix

+0

Я только что сделал, и теперь он написал «Application Ending» в файл. – Glowie

2

Поскольку идентификатор, под которым работает пул приложений вашего приложения, может не иметь разрешений на запись в каталоге C: \ CodeLocal. Попробуйте предоставить права на запись для идентификации пула приложений в этой папке.

+0

Он не получил сообщение об ошибке. – usr

Смежные вопросы