对象引用未设置为实例

本文关键字:实例 设置 对象引用 | 更新日期: 2023-09-27 18:12:43

我是c#和web服务的新手…我通常使用python很长时间…

我需要连接一个将在IIS上运行的web服务,本地调试成功,我将其部署到我的本地测试服务器,但由于那是在另一台计算机上,我无法通过web浏览器完全测试它…

当我尝试使用suds (python)访问它时,我的第一个测试函数Hello World运行正确,这表明我的服务是可访问的…

但是当我尝试调用一个接受参数并返回自定义数据类型的服务函数时,我的服务只是返回object reference not set to an instance of an object

正如我所说,我是c#和web服务的新手…所以我没能发现我的错误:(
public class Balance{
    private decimal _currentBalance;
    public decimal currentBalance
    {
        get { return _currentBalance; }
        set { _currentBalance = value; }
    }
}

public class Service1 : System.Web.Services.WebService
{
    private string _deviceId;
    public string deviceId
    {
        get { return _deviceId; }
        set { _deviceId = value; }
    }
    CrAc conn;
    CResult connResult;
    private void connectToServer()
    {
        conn= new CrAc();
        connResult= conn.Connect(deviceId);
    }
    private bool connectionControl()
    {
        return connResult.CRCStatus;
    }
    [WebMethod(Description="asdf")]
    public Balance checkBalance(string deviceId) {
        Balance balance = new balance {currentBalance= 0.00m};
        this.deviceId = deviceId;
        connectToServer();
        if (connectionControl())
        {
            XResult askBalance = conn.someFunc(deviceId);
            balance.currentBalance = askBalance.availableBalance;
        }
     return balance;
    }
}

我错过了什么?

对象引用未设置为实例

根据给定的信息不可能确定,但我打赌baglanti.someFunc(deviceId)返回null,并且在试图获得bakiyeSorgusu.availableBalance时您会得到异常。如果是,我会:

  • 检查someFunc在什么情况下可能返回null,并决定是否可以。
  • 如果可以,在你的服务调用中添加一个null检查,这样你就不会试图从null引用中获得availableBalance
  • 如果不可以,修复someFunc中的错误。

作为旁注,我建议您尽可能用英语编写代码(至少在在线发布代码示例时)。

您的方法bakiyeSor没有返回值。缺少一个return

最后,我们解决了这个问题…

我正在使用我从api提供程序获得的DLL,它对cpu和网络设备id有一些控制功能。我的开发机器是win7,但在测试服务器上,我们有运行在虚拟机上的虚拟win7……由于虚拟操作系统没有真正的cpu或网络id, api DLL在虚拟操作系统上失败,但在真实机器上完美运行…