protected void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面


string RandomStrings = GetValidateStr(5);    // 获取指定个数个字符验证码
Session["RandomString"]=RandomStrings;// 存放验证码字符串
this.DrawString(RandomStrings);                   // “画出”字符串
string str=Convert.ToString (Session["RandomString"]);
      

}+ this {ASP.yanzheng_aspx} QJDC.chkNum
+ sender {ASP.yanzheng_aspx} System.Object
+ e {System.EventArgs} System.EventArgs
RandomStrings "4W1DS" string
str null string
这是什么原因``str怎么会是null
我做的是验证码的验证``现在连值都传不出去``请哪位大哥帮帮忙``困扰几天了

解决方案 »

  1.   

    你配置文件设置enableSessionState="true"了嘛
      

  2.   

    RandomStrings有值 ``Session["RandomString"]为什么没有值啊``
      

  3.   

    <%@ Page language="c#" Codebehind="yanzheng.aspx.cs" AutoEventWireup="true" EnableSessionState="True" Inherits="QJDC.chkNum" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
    <HEAD>
    <title>yanzheng</title>
    <meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
    <meta name="CODE_LANGUAGE" Content="C#">
    <meta name="vs_defaultClientScript" content="JavaScript">
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    </HEAD>
    <body MS_POSITIONING="GridLayout">
    <form id="yanzheng" method="post" runat="server">
    <FONT face="宋体"></FONT>
    </form>
    </body>
    </HTML>
      

  4.   

    你的是windows server 2003?
      

  5.   

    请问分别是在哪些地方写enableSessionState="true"啊``
      

  6.   

    配置文件写一次即可,其它什么页不要再设置,另外session模式是 InProc嘛?
      

  7.   

    <%@ Page language="c#" Codebehind="yanzheng.aspx.cs" AutoEventWireup="true" EnableSessionState="True" Inherits="QJDC.chkNum" %>
    是在这个里面写就可以了吗?``其它地方不要写了```
    session模式是 InProc
      

  8.   

    我在yanzheng.aspx.cs(就是写生成验证码的页面)的web.config中写``图片就生成不了``str值还是null
      

  9.   

    告诉你一个办法:
    1.你随便创建一个字符串,然后保存到session中试试,如果能读出这个字符串,那么说明你的web.config和环境设置都没问题,最有可能的问题是你的代码有问题;如果也不能读出这个字符串,那么应该检查你的web.config和环境设置
    2.从session读取对象的代码最好这样写,一个可以提高性能,还有一个可以确保类型转换是安全的
    string str = Session["RandomString"] as string
    if(str!=null)
    {
       //对读取的字符串进行操作
    }我等着接你的200分,呵呵
      

  10.   

    dddd218(恋恋风尘) 說的很全哦。
    如果你新開一個網站,web.config什麼都沒改動的話,這個問題應該不會出現,可能你代碼有問題了,比如哪裡不小心寫了一個session.clear();
      

  11.   

    session里没值```是web.config和环境设置问题```可我不知道怎么弄``可以告诉我吗``解决问题200分肯定送到
      

  12.   

    ---------------------------------------------------yanzheng.aspx的web.config<?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        
      <system.web>    <!--  动态调试编译
              设置 compilation debug="true" 以启用 ASPX 调试。否则,将此值设置为
              false 将提高此应用程序的运行时性能。
              设置 compilation debug="true" 以将调试符号(.pdb 信息)
              插入到编译页中。因为这将创建执行起来
              较慢的大文件,所以应该只在调试时将此值设置为 true,而在所有其他时候都设置为
              false。有关更多信息,请参考有关
              调试 ASP.NET 文件的文档。
        -->
        <compilation 
             defaultLanguage="c#"
             debug="true"
        />    <!--  自定义错误信息
              设置 customErrors mode="On" 或 "RemoteOnly" 以启用自定义错误信息,或设置为 "Off" 以禁用自定义错误信息。 
              为每个要处理的错误添加 <error> 标记。          "On" 始终显示自定义(友好的)信息。
              "Off" 始终显示详细的 ASP.NET 错误信息。
              "RemoteOnly" 只对不在本地 Web 服务器上运行的
               用户显示自定义(友好的)信息。出于安全目的,建议使用此设置,以便 
               不向远程客户端显示应用程序的详细信息。
        -->
        <customErrors 
        mode="RemoteOnly" 
        />     <!--  身份验证 
              此节设置应用程序的身份验证策略。可能的模式是 "Windows"、 
              "Forms"、 "Passport" 和 "None"          "None" 不执行身份验证。 
              "Windows" IIS 根据应用程序的设置执行身份验证 
                (基本、简要或集成 Windows)。在 IIS 中必须禁用匿名访问。
              "Forms" 您为用户提供一个输入凭据的自定义窗体(Web 页),然后 
               在您的应用程序中验证他们的身份。用户凭据标记存储在 Cookie 中。
              "Passport" 身份验证是通过 Microsoft 的集中身份验证服务执行的,
               它为成员站点提供单独登录和核心配置文件服务。
        -->
        <authentication mode="Windows" />  <!--  授权 
               此节设置应用程序的授权策略。可以允许或拒绝不同的用户或角色访问
              应用程序资源。通配符: "*" 表示任何人,"?" 表示匿名
              (未经身份验证的)用户。
        -->    <authorization>
            <allow users="?" /> <!-- 允许所有用户 -->
                <!--  <allow     users="[逗号分隔的用户列表]"
                                 roles="[逗号分隔的角色列表]"/>
                      <deny      users="[逗号分隔的用户列表]"
                                 roles="[逗号分隔的角色列表]"/>
                -->
        </authorization>    <!--  应用程序级别跟踪记录
              应用程序级别跟踪为应用程序中的每一页启用跟踪日志输出。
              设置 trace enabled="true" 可以启用应用程序跟踪记录。如果 pageOutput="true",则
              在每一页的底部显示跟踪信息。否则,可以通过浏览 Web 应用程序
               根目录中的 "trace.axd" 页来查看
              应用程序跟踪日志。
        -->
        <trace
            enabled="false"
            requestLimit="10"
            pageOutput="false"
            traceMode="SortByTime"
    localOnly="true"
        />    <!--  会话状态设置
              默认情况下,ASP.NET 使用 Cookie 来标识哪些请求属于特定的会话。
              如果 Cookie 不可用,则可以通过将会话标识符添加到 URL 来跟踪会话。
             若要禁用 Cookie,请设置 sessionState cookieless="true"。
        -->
        <sessionState 
                mode="InProc"
                stateConnectionString="tcpip=127.0.0.1:42424"
                sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
                cookieless="false" 
                timeout="20" 
                />    <!--  全球化
              此节设置应用程序的全球化设置。
        -->
        <globalization 
                requestEncoding="utf-8" 
                responseEncoding="utf-8" 
       />
       
     </system.web></configuration>
    ------------------------------yanzheng.aspx<%@ Page language="c#" Codebehind="yanzheng.aspx.cs" AutoEventWireup="true" EnableSessionState="True"  Inherits="QJDC.chkNum" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
    <HEAD>
    <title>yanzheng</title>
    <meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
    <meta name="CODE_LANGUAGE" Content="C#">
    <meta name="vs_defaultClientScript" content="JavaScript">
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    </HEAD>
    <body MS_POSITIONING="GridLayout">
    <form id="yanzheng" method="post" runat="server">
    <FONT face="宋体"></FONT>
    </form>
    </body>
    </HTML>
      

  13.   

    session里没值```是web.config和环境设置问题```可我不知道怎么弄``可以告诉我吗``解决问题200分肯定送到
    ……………………………………………………
    说明已经把问题定位缩小了一半,接着让我再来给你看看,呵呵
      

  14.   

    Session["RandomString"]有值了``可另一个页面还是空值
      

  15.   

    Session["RandomString"]有值了``可另一个页面还是空值&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
    说得明白一点
      

  16.   

    就是RandomString把值赋到了Session["RandomString"]``
    可另一个页面yanzheng=Session["RandomString"] as string();
    yanzheng 还是空值
      

  17.   

    就是RandomString把值赋到了Session["RandomString"]``
    可另一个页面yanzheng=Session["RandomString"] as string;
    yanzheng 还是空值
      
      

  18.   

    protected void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面


    string RandomStrings = GetValidateStr(5);    // 获取指定个数个字符验证码
             Session["RandomString"]=RandomStrings;// 存放验证码字符串
     string str=Convert.ToString (Session["RandomString"]); this.DrawString(RandomStrings);// “画出”字符串
    }
    + this {ASP.yanzheng_aspx} QJDC.chkNum
    + sender {ASP.yanzheng_aspx} System.Object
    + e {System.EventArgs} System.EventArgs
    RandomStrings "cwoZE" string
    str          "cwoZE" string
      

  19.   

    就是RandomString把值赋到了Session["RandomString"]``
    可另一个页面yanzheng=Session["RandomString"] as string;
    yanzheng 还是空值
    &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
    1.你在保存session的页面读取这个session试试(也就是保存session后马上在同一个页面读取试试),看看能不能读到这个值
    2.把另一个页面无法读取session的部分代码给我看一下
    3.我开始怀疑你的web应用程序是否在频繁重启(每次重启session就会丢失),比如动态删除web文件夹下面的目录就会导致web程序重启;当然你检查一下你的iis是否在频繁重启。在线给你解决问题,呵呵
      

  20.   

    string yanzheng=Session["RandomString"] as string ;
    if(yanzheng!=null)
    {
    string verify=TextBox1.Value.Trim();
    if(verify==yanzheng){}
              }你在保存session的页面读取这个session试试(也就是保存session后马上在同一个页面读取试试),看看能不能读到这个值
    这样算不算
    string RandomStrings = GetValidateStr(5);    // 获取指定个数个字符验证码
    Session["RandomString"]=RandomStrings;// 存放验证码字符串
    string str=Convert.ToString (Session["RandomString"]);
                    string yanzheng=Session["RandomString"] as string ;
    这样有值
    谢谢啊```
      

  21.   

    你的QQ多少``我加你QQ怎么样啊``这样好象有点慢``我的328768157
      

  22.   

    也就是说在保存sesson的页面能够取到值,在别的页面不能取到值????办法:
    你再创建一个测试页面,看看在这个测试页面能不能取到值。还有你把不能取到值的页面的代码给我看看
      

  23.   

    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;
    namespace forgetpassword
    {
    /// <summary>
    /// WebForm1 的摘要说明。
    /// </summary>
    public  class  WebForm1 : System.Web.UI.Page
    {
    protected System.Web.UI.HtmlControls.HtmlInputText TextBox1;
    protected System.Web.UI.WebControls.Button Button1;
    protected System.Web.UI.HtmlControls.HtmlForm Form1;
    protected System.Web.UI.HtmlControls.HtmlInputText u1;
    protected System.Web.UI.HtmlControls.HtmlInputText pwd;
    protected System.Web.UI.HtmlControls.HtmlInputText spwd;
    protected System.Web.UI.HtmlControls.HtmlGenericControl P1;
    protected System.Web.UI.HtmlControls.HtmlSelect select4;
    protected System.Web.UI.HtmlControls.HtmlInputText ypwd;
    protected System.Web.UI.HtmlControls.HtmlInputImage Submit;


    protected void Page_Load(object sender, System.EventArgs e)
    {
    // string sTcp="tcp://locahost:9932/component";
    // registerclient.registerclient rc = new registerclient.registerclient ();
    // component.component sendserverinfo =new component.component();
    // sendserverinfo = rc.getregisterclient(sTcp);



    } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.Submit.ServerClick += new System.Web.UI.ImageClickEventHandler(this.Submit_ServerClick);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion
    protected void Submit_ServerClick(object sender, System.Web.UI.ImageClickEventArgs e)
    {

    component.component sendserverinfos = new component.component();
    if(u1.Value==""||pwd.Value ==""||ypwd.Value ==""||spwd.Value ==""||select4.Value=="")
    {
    Response.Write("<script language='javascript'>alert('请认真填写!!!');</script>");
    return;
    }
    else
    {
    bool r1=sendserverinfos.checkpwd(pwd.Value.Trim());
    if(r1)
    {
       string yanzheng=Session["RandomString"] as string ;
    if(yanzheng!=null)
    {
    string verify=TextBox1.Value.Trim();
    if(verify==yanzheng)
    {

    bool rs=sendserverinfos.forgetpwd(u1.Value.Trim() ,select4.Value.Trim(),ypwd.Value.Trim());
                               
    if(!rs)
    {
    Response.Write("<script language='javascript'>alert('密码提示和用户不一至,密码修改失败!');</script>");
    u1.Value="";
    pwd.Value ="";
    ypwd.Value ="";
    spwd.Value ="";
             return;
    }
    else
    {
    bool rc=sendserverinfos.repairpwd2(spwd.Value.Trim(),u1.Value.Trim() );
    if(rc)
    {
    Response.Write("<script language='javascript'>alert('密码修改成功!请保管好您的密码!');</script>");
    }
    else
    {

    Response.Write("<script language='javascript'>alert('密码修改失败!!');</script>");
    u1.Value="";
    pwd.Value ="";
    ypwd.Value ="";
    spwd.Value ="";
    return;

    }
    }
    }
    else
    {
    Response.Write("<script language='javascript'>alert('验证码错误!!');</script>");

    pwd.Value ="";
    ypwd.Value ="";
    spwd.Value ="";
    return;
    }
    }
    else
    {
                       Response.Write("<script language='javascript'>alert('session null!!');</script>");
    return;
    }
    }
    else
    {
    Response.Write("<script language='javascript'>alert('密码格式错误!!');</script>");
    u1.Value="";
    pwd.Value ="";
    ypwd.Value ="";
    spwd.Value ="";
    return;
    } }
    }
    }

    }
      

  24.   

    本人不玩qq的,上了qq没办法工作
      

  25.   

    你在这个方法中protected void Submit_ServerClick(object sender, System.Web.UI.ImageClickEventArgs e)
    把与获取session无关的一切代码先注释掉以后再试试
      

  26.   

    各位高手给你提出了这么多解决办法。但是还有一个经常错误的 Session["RandomString"] 是否写得一样? 好好检查一下。如果你你机器是双CPU 建议将 Session的存储方式改为 Inproc.
      

  27.   

    你再新建一个简单的测试页面,看看在这个测试页面里能不能取到值。如果能取到,那就是你那个不能取到session的页面中的代码的问题,与sesson本身无关。
      

  28.   

    Response.Cookies.Add(new HttpCookie("checkcode", strcode));
      

  29.   

    还是不行```null※※※※※※※※※※※※※※※※
    在新建的测试页面中不能取到?
      

  30.   

    在yanzheng.aspx同一目录下就可以获得值``
    不在同一目录下就没有值
      

  31.   

    我想问题可能出在这,你第一次
    string RandomStrings = GetValidateStr(5);    // 获取指定个数个字符验证码
    Session["RandomString"]=RandomStrings
    获取了值并画出了字串,但在加载的时候,就又获取了一次,但这次是空的,所有Session["RandomString"]=就被替换为空了,可以这样解决。
    用一个Viewstatel来记录第一次获取的值,或者设置页面判断是否页面回传,防止session被替换。
      

  32.   

    1.当然不能用cookes,不安全。2.在yanzheng.aspx同一目录下就可以获得值``
    不在同一目录下就没有值
    ※※※※※※※※※※※※※※※
    这个现象还真没见过。session是保存在服务器内存中的,对该web程序的所有目录下的所有页面都可以访问。3.你再往session中随便保存一个字符串常量试试,看看在同一个页面,同一个目录不同页面,不同目录不同页面中获取这个session试试
      

  33.   

    还有你要确保session写入
    protected void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面 if (!IsPostBack)   //加这句话试试
            {
    string RandomStrings = GetValidateStr(5);    // 获取指定个数个字符验证码
    Session["RandomString"]=RandomStrings;// 存放验证码字符串
    this.DrawString(RandomStrings);                   // “画出”字符串
    string str=Convert.ToString (Session["RandomString"]);
    }
          }
      

  34.   

    我想问题可能出在这,你第一次
    string RandomStrings = GetValidateStr(5);    // 获取指定个数个字符验证码
    Session["RandomString"]=RandomStrings
    获取了值并画出了字串,但在加载的时候,就又获取了一次,但这次是空的,所有Session["RandomString"]=就被替换为空了,可以这样解决。
    用一个Viewstatel来记录第一次获取的值,或者设置页面判断是否页面回传,防止session被替换。
      
    问题又出现了```
    虽然加载了两次``可Session["RandomString"]的值同时也被加载了
      

  35.   


    1.你往session中随便保存一个字符串常量(不是那个图片值)试试,看看在同一个页面,同一个目录不同页面,不同目录不同页面中获取这个session试试
    2.确保程序中其他地方没有修改或者清空这个session值
    3.确保你的web应用程序没有不间断重启(每次重启session就会丢失),你的iis没有不间断重启。
    我都要和你一起崩溃了
      

  36.   

    1.你往session中随便保存一个字符串常量(不是那个图片值)试试,看看在同一个页面,同一个目录不同页面,不同目录不同页面中获取这个session试试。
    注意:session名字要换一个新的。
      

  37.   

    ?session传值问题(djdyhduk) 20 41 4-26 12:06 管理 
    ?你们是怎么把验证码的值传到另一个页面的(djdyhduk) 20 32 4-26 12:01 管理 
    ?验证码的错误(djdyhduk) 30 7 4-25 12:40 管理 
    ?session怎么老是空值(djdyhduk) 20 13 4-25 10:09 管理 
    ?为什么session总是空值啊(djdyhduk) 20 35 4-25 10:07 管理 
    ?验证码怎么连图片都显示不出来了(djdyhduk) 我两个页面不在同一虚拟目录下
    你到这个页面回复``我给分```
      

  38.   

    我两个页面不在同一虚拟目录下
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    搞了快一天了总算你说出了原因:
    1.一个虚拟目录对应一个web程序,sesson只能在同一个web程序之间的跨页面共享,而不能跨web程序啊。
    2.如果你的数据需要跨web程序,那就保存到数据库好了,让不同的web程序共同访问这个数据库好了。我去接分了