用户在asp.net中未处理Nullreference异常

本文关键字:未处理 Nullreference 异常 net asp 用户 | 更新日期: 2023-09-27 17:53:51

在下面的代码中,我有一个字符串值,它有一个路径。我想把字符串值在静态方法,但我得到对象引用不设置为一个对象的实例。如果我在代码中写入路径,它可以工作,但不具有路径的字符串值,请帮助我解决问题。

 var projectname = name.ProjectName;
 var batchname = name.BatchName;
 var imagename = name.ImageName;
 string concatenatedStr = "/"+ projectname + "/" + batchname + "/Input/" + imagename; 


[WebMethod]
public static string buttonclickImage(string pageNo)
{
       int iPageNo = 0;
       if (pageNo != string.Empty && pageNo != "undefined")
          iPageNo = Int32.Parse(pageNo);
       FileTransfer.FileTransferClient fileTranz = new FileTransfer.FileTransferClient();
       FileDto file = fileTranz.GetTifftoJPEG("concatenatedStr", iPageNo, "gmasdll"); 

       var fileData = Convert.ToBase64String(file.Content);//throws error
       return fileData;
 }

用户在asp.net中未处理Nullreference异常

表示文件为空或文件为空。内容为空。您可以使用

来避免异常。
if(file!=null && file.Content!=null)
{
   //your remaining code
}

理想情况下,你应该首先检查为什么它是null

编辑:

从你的评论我推断,你想传递你的变量。要么将字符串设置为静态,要么将方法设置为非静态,或者将字符串传递给方法

[WebMethod]
public static string buttonclickImage(string pageNo)
{
       int iPageNo = 0;
       if (pageNo != string.Empty && pageNo != "undefined")
          iPageNo = Int32.Parse(pageNo);
       FileTransfer.FileTransferClient fileTranz = new FileTransfer.FileTransferClient();
       //note the change here. no double quotes.
       FileDto file = fileTranz.GetTifftoJPEG(concatenatedStr, iPageNo, "gmasdll"); 

       var fileData = Convert.ToBase64String(file.Content);//throws error
       return fileData;
 }

您没有传递存储在concatenatedStr变量中的值…你传入的是字符串"concatenatedStr"

改变:

FileDto file = fileTranz.GetTifftoJPEG("concatenatedStr", iPageNo, "gmasdll"); 

:

FileDto file = fileTranz.GetTifftoJPEG(concatenatedStr, iPageNo, "gmasdll");

您还需要将变量设置为静态,因为您的方法是静态的。或者保持变量不变,使方法成为非静态的,如果这是一个选项的话。

我对这些变量的位置有点困惑。它们在作用域内看起来是类级的,但是这样你就不能在那个位置使用var了。

我猜你也可以修改你的方法来接受一个额外的参数,然后从你调用它的地方传入值。

public static string buttonclickImage(string pageNo, string concatenatedStr)
{
    ...

可以了

[WebMethod]
        public static string buttonclickImage(string pageNo)
        {
            var name = (name)HttpContext.Current.Session["Projectname"];
            var projectname = name.ProjectName;
            var batchname = name.BatchName;
            var imagename = name.ImageName;
            string concatenatedStr = "/" + projectname + "/" + batchname + "/Input/" + imagename;
            int iPageNo = 0;
            if (pageNo != string.Empty && pageNo != "undefined")
                iPageNo = Int32.Parse(pageNo);
            FileTransfer.FileTransferClient fileTranz = new FileTransfer.FileTransferClient();
            FileDto file = fileTranz.GetTifftoJPEG(concatenatedStr, iPageNo, "gmasdll");

            var fileData = Convert.ToBase64String(file.Content);
            return fileData;
        }

首先使用String.Format构造"concatenatedStr"变量的值。

例如

: -

var projectname = name.ProjectName; var batchname = name.BatchName;

var imagename = name.ImageName;

string concatenatedStr = string。格式("/{0}/{1}/输入/{2}",projectname, batchname, imagename);

把调试点放在这里,检查"concatenatedStr"的值是什么。如果"concatenatedStr"为空,那么你肯定会得到"Nullreference exception"....

所以可能有一个问题与"concatenatedStr".....所以也要仔细检查连接变量…

希望这行得通......