WCF - SOAP客户端在创建后变为null

时间:2016-10-14 06:48:11

标签: c# asp.net-mvc web-services wcf soap

我有一个使用ASP.NET MVC5的项目。在控制器的一个操作中,我创建了一个新的LocalHelper对象。

LocalHelper是一个子类,它有一个构造函数来创建一个用于调用Web服务的SOAP客户端。我在构造函数中设置了断点,并验证了在构造函数中创建了有效的SOAP客户端。

这是我的问题:

我认为在动作代码中,当创建一个新的LocalHelper对象时,在该对象中将存在一个有效的SOAP客户端,直到该对象消失。但是,当我尝试使用此LocalHelper对象来调用某些Web服务时,我发现soapClient变为null,因此已经抛出异常。

为什么会发生这种情况,有没有办法让变量引用有效的SOAP客户端并在对象中持久存在?感谢。

以下是说明我的方案的简化代码

public ActionResult UserRead([DataSourceRequest]DataSourceRequest request, string code)
 {
   try
   {
     var helper = new MyHelper.LocalHelper();
     var userList = helper.GetUserList();
     ...
   }
}

MyHelper.cs

public class MyHelper
{
    public class LocalHelper
    {
        WebServiceSoapClient soapClient = null;

        public LocalHelper()
        {
           soapClient = MyWebServiceFactory.GetSoapClient;
           // Here I have verified that it does get a valid SOAP client
        }

        public List<String> GetUserList(){
           // Here, soapClient become null, and thus throw excpetion
            return soapClient.getUserList();
        }
    }
    public class RemoteHelper{
        ...
    }
}

0 个答案:

没有答案