1

次のコード行を含むプロジェクトを「継承」しました。

        objLibPharmacy.UserId = Guid.Parse(Session["GroupId"].ToString());

デバッガーを実行すると、次のようなエラーが表示されます。

Object reference not set to an instance of an object.

Description: An unhandled exception occurred during the execution of the current web 
request. Please review the stack trace for more information about the error and where it 
originated in the code. 

一部のスタック トレースは次のとおりです。

[NullReferenceException: Object reference not set to an instance of an object.]

UserControl_wuc_Pharmacy.bindPharmacyPopUp()

bindPharmacyPopUp は次のとおりです。

  private void bindPharmacyPopUp()
{
    /******************Bind Pharmacy Popup*********************/
    objLibPharmacy = new LibPharmacy();
    objLibPharmacy.PharmacyId = 0;
    objLibPharmacy.UserId = Guid.Parse(Session["GroupId"].ToString());
    objclsPharmacy = new clsPharmacy();
    objDs = objclsPharmacy.GetPharmacy(objLibPharmacy);
    string strFilter = "";
    if (objDs != null)
    {
        if (txtSearchPharmacy.Text != "")
            strFilter = "PharmacyName like '%" + txtSearchPharmacy.Text + "%'";
        DataView dv = objDs.Tables[0].DefaultView;
        if (strFilter != "")
            dv.RowFilter = strFilter;
        Utility.bindGridview(dv.ToTable(), gvPharmacyList);
        Utility.bindDDL(objDs.Tables[1], ddlPharmacyDetail, "Pharmacy");
        //ViewState["PharmacyTable"] = objDs.Tables[0];
    }

    /*********************************************************/
}

null 参照の原因は何ですか? デバッグをエラーなしで実行するには、このような null 参照をどのように処理すればよいですか?

4

3 に答える 3

10

これSession["GroupId"]は null の場合に発生します。

使用する前に、そのことを確認する必要があります。

于 2013-08-08T17:34:28.690 に答える
4

その名前が示すように、Null 参照例外は、初期化されていないオブジェクトまたは逆参照されているオブジェクトに対して操作を実行しようとすると発生します。この場合、おそらくまだ初期化されていない.ToString()onを呼び出しています。Session["GroupId"]

最善の方法は、アクセスする前に GroupId セッション変数を初期化することです。回避策として、変数が null の場合は解析をスキップできます。

if (Session["GroupId"] != null)
{
    objLibPharmacy.UserId = Guid.Parse(Session["GroupId"].ToString());
}
于 2013-08-08T17:41:08.553 に答える
0

Guid.TryParseメソッドを試すことができます:

Guid userId;
if (Guid.TryParse(Session["GroupId"].ToString(), out userId))
   objLibPharmacy.UserId = userId;
于 2013-08-08T17:48:44.170 に答える