2

私のWebページでは、リモートサーバーへのポストバックでセッション変数を取得できません。

問題は

ページが IsPostback でない場合、セッション変数を取得できます。

ただし、ページがポストバックされると、エラーが表示されます。

asynchfile アップロードを使用すると、この同じエラーが発生します。asynchfileupload を使用して画像をアップロードし、セッション変数に保存しています。後でボタンをクリックすると、データをディレクトリに保存しています。

この問題は、サーバーにファイルをアップロードすると発生します。画像をアップロードするために asynchfileupload コントロールを使用していますが、頻繁には発生していません。

ここに私のコードがあります

protected void AsynImageLoader_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
{
    if (AsynImageLoader.PostedFile != null)
    {
        string extension = System.IO.Path.GetExtension(AsynImageLoader.PostedFile.FileName);

        if (extension == ".jpg" || extension == ".gif" || extension == ".jpeg" || extension == ".png")
        {
            HttpPostedFile file = AsynImageLoader.PostedFile;
            Session["TempImage"] = ReadFile(file);
        }
    }
}

ボタンクリックで

   var storedImage = Session["TempImage"] as byte[];
   String Strthumbpath = Server.MapPath("content\\thumbnail\\");
   if (storedImage != null)
   {
       System.Drawing.Image image = GetImage(storedImage);
       if (image != null)
       {
       image.Save(Strthumbpath + strFileName);
       }

       }

データベースに値を挿入しています。

グーグルで調べた後、ファイルがサブディレクトリに追加されたり、webconfigを編集したりすると、アプリケーションが再起動することがわかりました。

もしそうなら、どうすればこれを解決できますか..

前もって感謝します。

4

6 に答える 6

0

次のように、セッションが null または空であるかどうかを確認する必要があります。

 if (Session["User_id"] == null || Session["User_id"].ToString() == string.Empty)
 {
    Response.write(Session["User_id"].ToString());
 }
 else
 {
   // your code
 }
于 2011-05-02T13:10:51.020 に答える
0

ボタン クリック イベントは、ページの Load イベントの後に発生ます...これが設定されていない理由かもしれません。;-)

于 2011-05-02T19:21:31.230 に答える
0

web.configリモート マシン上のファイルを調べて、sessionState要素が正しく構成されていることを確認してください。リモート サーバーでmode属性が に設定されている可能性があります。Off

他の人が指摘しているようnullに、セッションに保存したオブジェクトのプロパティにアクセスする前に、より防御的にチェックするようにコーディングできます。

于 2011-05-02T13:11:42.020 に答える
0

ポストバックすると、「User_id」というセッション変数が削除されているようです。「オブジェクトがオブジェクトのインスタンスに設定されていません」というメッセージが表示されるのは、許可されていない null オブジェクトに対して「ToString()」メソッドを実行しようとしているためです。

お役に立てれば。

于 2011-05-02T12:50:46.473 に答える
0

問題を推測できないコードを提供してください。ただし、セッション変数を使用する前に、いつでも null チェックを行うことができます。

if(Session["User_id"]) != null;
于 2011-05-02T12:56:59.323 に答える
0

最初の確認セッション。

if (Session["User_id"] == null)
{
//Put code here

}
else
{
     Response.Write(Session["User_id"]);

     // or you can write as below

     Response.Write(Convert.ToString(Session["User_id"]));
}

.ToString()メソッドを使用しないでください。使用する必要がありますConvert.ToString。これは null 値も処理します。

于 2011-05-02T13:14:59.763 に答える