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

时间:2014-03-27 11:26:59

标签: c# asp.net

在下面的代码中,我有一个字符串值,它有一个路径。我想将String值放在静态方法中但是我得到的Object引用没有设置为object的实例。如果我在该代码中编写路径它但是没有字符串值,它有路径.pls帮助我解决问题。

 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;
 }

4 个答案:

答案 0 :(得分:3)

表示文件为null或file.Content为null。

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

理想情况下,您应首先检查它为空的原因

修改 根据你的评论我推断你想传递你的变数。要么使你的字符串静态,要么使你的方法不是静态的或将字符串传递给你的方法

[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;
 }

答案 1 :(得分:1)

你没有传递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)
{
    ...

答案 2 :(得分:0)

这有效

[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;
        }

答案 3 :(得分:0)

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

例如: -

var projectname = name.ProjectName;

var batchname = name.BatchName;

var imagename = name.ImageName;

string concatenatedStr = string.Format(" / {0} / {1} / Input / {2}",projectname,batchname,imagename);

将调试点放在此处并检查什么值" concatenatedStr"具有。 如果" concatenatedStr"是null然后肯定你会得到" Nullreference例外" ....

因此可能存在" concatenatedStr" .....这样深入检查连接变量......

希望这有效......