用户在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;
}
表示文件为空或文件为空。内容为空。您可以使用
来避免异常。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".....所以也要仔细检查连接变量…
希望这行得通......