对象引用未设置为实例

时间:2011-10-28 10:37:02

标签: c# web-services

我是c#和Web服务的新手...通常我会使用python很长一段时间......

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

当我尝试访问它suw(python)时,我的第一个测试函数Hello World正确运行,这表明我的serice是可访问的......

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

正如我所说,我是c#和网络服务的新手...所以我无法发现我的错误:(

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

我缺少什么?

3 个答案:

答案 0 :(得分:1)

根据给定的信息无法确定,但我的赌注是baglanti.someFunc(deviceId)返回null,并且在尝试获取bakiyeSorgusu.availableBalance时会出现异常。如果是这样,我会:

  • 检查someFunc可能返回null的情况,并确定是否可以。
  • 如果没问题,请在服务调用中添加空检查,这样就不会尝试从空引用中获取availableBalance
  • 如果不正常,请修复someFunc
  • 中的错误

作为旁注,如果可能,我建议您用英语编写代码(至少在网上发布代码示例时)。这样代码就会对更多人有意义。

答案 1 :(得分:0)

你的方法bakiyeSor没有返回值。缺少return

答案 2 :(得分:0)

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

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