VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 813|回复: 6

"Object reference not set to an instance of an object" 错误,搞死我了

[复制链接]

1

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-9-28 18:30:01 | 显示全部楼层 |阅读模式
自己写了一个工程,一个类提供一个方法,从数据库里查询,返回一个字符串(用的人家开发的pattern,不知道数据怎么出来的,只知道就那么用)。现在如果另外一个web application引用了这个类,调用这个方法,一切正常。但是我如果用一个web service得工程,引用这个类,把上面的类的返回string,作为web method得返回, 在web application中引用web service,调用方法,会出现"Object reference not set to an instance of an object"的错误。 用try 输出错误为
System.Web.Services.Protocols.SoapException: Server was unable to process request. --> Object reference not set to an instance of an object. at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall) at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters) at WSClient.RemotingServ.ServiceRemoting.GetOptionText() in C:\Inetpub\wwwroot\WSClient\Web References\RemotingServ\Reference.cs:line 55 at WSClient.TestRemoting.Button1_Click(Object sender, EventArgs e) in c:\inetpub\wwwroot\wsclient\testremoting.aspx.cs:line 58

请各位高手指点。因为业务要求,我的webservice不能直接去存取数据库,必须通过那个中间类区得到数据库里的东西!
回复

使用道具 举报

0

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-9-30 22:30:01 | 显示全部楼层
很常见的代码问题,就是漏了在某个地方要先新建对象再引用。
回复

使用道具 举报

0

主题

7

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-9-30 22:45:01 | 显示全部楼层
web service中不做数据库处理,是否正常
回复

使用道具 举报

1

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-10-1 01:30:01 | 显示全部楼层
因该没有漏,相同的代码,我不用webservice调就好,用webservice就不行,调试跟踪了一下,走的过程都是一样的,就是某一个对象返回式个空的,但是不知道为什么。

没办法,我只能通过成形的business tier去访问数据库,web service自己不能去访问,我觉得没有什么不正常的
回复

使用道具 举报

0

主题

20

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-10-1 05:15:01 | 显示全部楼层
问题肯定处在你的那个类里面

先看看你的这个类,是不是使用WS调用的时候出错了
回复

使用道具 举报

0

主题

20

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-10-1 06:15:01 | 显示全部楼层
贴贴你的代码,就贴在你的那个类里面执行的路径就可以了
回复

使用道具 举报

1

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-10-1 07:30:01 | 显示全部楼层
其实是这个类的里面的错误,就是调用一个对象返回为空。但关键是我不用web service 调就可以,这才是我纳闷的位置!代码我随后贴上来,其中就是tempInvokerFactory返回出错,

public string GetOption()
                {
                        GATServiceInvoker invoker = GATInvoker();
                        Element element = invoker.ReadDiv("GATID_4ca9b6ce3f49420683ef982c30a5a1cb", "en");
                        string temp=((TextOptionElement)element.ConcreteElement).OptionText.ToString();
                        return temp;
                }

private GATServiceInvoker GATInvoker()
                {
                        if (tempGatService != null) return tempGatService;
                        tempGatService = GetInvokerFactory().GetGATServiceInvoker();
                        tempGatService.ErrorOccurred +=new ErrorOccurredEventHandler(ServiceInvoker_ErrorOccurred);
                        return tempGatService;
                }

                private ServiceInvokerFactory GetInvokerFactory()
                {
                        if ( tempInvokerFactory != null ) return tempInvokerFactory;
                        tempInvokerFactory = new ServiceInvokerFactory( GetFactory() );
                        return tempInvokerFactory;
                }

                private ServiceFactory GetFactory()
                {
                        if ( tempFactory != null ) return tempFactory;
                        tempFactory = new ServiceFactory();
                        return tempFactory;
                }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表