locked
关于iis 6中出现 在globe.asax.cs中的application_end中不能使用MapPath的问题? RRS feed

  • 问题

  •  

    您好:

    我给count.txt 打开了NETWORK SERVICE 的完全控制的权限
    有说 application_end中不能使用,mappath这是为什么? 谢谢
    我的代码附后

    我的iis报如下错误:

    事件类型: 警告
    事件来源: ASP.NET 2.0.50727.0
    事件种类: Web Event
    事件 ID: 1309
    日期:  2008-7-19
    事件:  21:20:22
    用户:  N/A
    计算机:
    描述:
    Event code: 3005
    Event message: 发生了未处理的异常。
    Event time: 2008-7-19 21:20:22
    Event time (UTC): 2008-7-19 13:20:22
    Event ID: ca98924c6f16449791ce77d073d73e6d
    Event sequence: 17
    Event occurrence: 1
    Event detail code: 0

    Application information:
        Application domain: /LM/W3SVC/498560637/Root-1-12860941439963750
        Trust level: Full
        Application Virtual Path: /
        Application Path: C:\Inetpub\wwwroot\laowang88\
        Machine name: JEKRHFJK-58F112

    Process information:
        Process ID: 3132
        Process name: w3wp.exe
        Account name: NT AUTHORITY\NETWORK SERVICE

    Exception information:
        Exception type: HttpException
        Exception message: 服务器操作在此上下文中不可用。

    Request information:
        Request URL:
        Request path:
        User host address:
        User:
        Is authenticated: False
        Authentication Type:
        Thread account name: NT AUTHORITY\NETWORK SERVICE

    Thread information:
        Thread ID: 1
        Thread account name: NT AUTHORITY\NETWORK SERVICE
        Is impersonating: False
        Stack trace:    在 System.Web.HttpServerUtility.MapPath(String path)

    我的代码附后:

       在 counter2.Global.Application_End(Object sender, EventArgs e)

        protected void Application_End(object sender, EventArgs e)
        {
            uint js = 0;

            js = (uint)Application["counter"];
            try
            {

                string file_path = Server.MapPath("~/counter.txt");

                if (!File.Exists(file_path))
                {
                    throw new FileNotFoundException("文件不存在。", file_path);
                }


                StreamWriter fs = new StreamWriter(file_path, false);

            fs.WriteLine(js);

            fs.Close();
      }
            catch
            {
                throw;
            }
        }
    2008年7月20日 2:13

答案

  • 不能使用,因为此时Server环境可能已经不存在了,你可以

    可以在Application_Start方法里,MapPath一下,存到application变量里。或者放在配置文件里试试

    2008年7月20日 3:45
    版主