我有一个使用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{
...
}
}