了解登录超时的时间



我需要连接到Web服务以执行事务。为此,我正在使用类NetSuiteService:System.Web.Services.Protocols.SoapHttpClientProtocol。为了获得服务,我需要登录。我不想创建 Web 服务,并在每次需要执行事务时登录。我有功能可以做到这一点。

private static NetSuiteService Service { get; set; } = new NetSuiteService();

private static void isOnline()
{
if (Service.applicationInfo != null) return;
Service.CookieContainer = new CookieContainer();
Service.applicationInfo = new ApplicationInfo();
var passport = new Passport();
passport.account = "aaa";
passport.email = "bbb";
var role = new RecordRef();
passport.password = "999";
try
{
var status = Service.login(passport).status;
if (!status.isSuccess)
{
Log.ErrorFormat("can't login to NetSuite - {0}", status.statusDetail);
Service.applicationInfo = null;
}
}
catch (Exception ex)
{
Log.Error("NetSuite login err", ex);
}
}

但有时我的连接超时,我需要重新连接。在这种情况下,我在执行交易时有异常。

是否有可能在进行交易之前以某种方式知道我的会话是否超时?

以下代码创建登录护照,您可以将其添加到您的服务中

_service = new NetSuiteService();
Passport passport = new Passport();
passport.account = _custSettings["login.acct"];
passport.email = _custSettings["login.email"];
passport.password = _custSettings["login.password"];
RecordRef role = new RecordRef();
role.internalId = _custSettings["login.roleId"];
passport.role = role;
_service.passport = passport;

只需设置一次,现在可以进行所有 Web API 调用,而不会超时。因此,不是使用 Service.login(( 方法,而是在每次 API 调用时自动使用护照。

我正在从配置文件中读取登录详细信息,但您可以在应用程序中插入它。

最新更新