在 C# 中调用智能对象方法

本文关键字:对象 方法 智能 调用 | 更新日期: 2023-09-27 18:35:08

我在 K2 设计器中创建了一个 SmartObject,并添加了 WCF URL 作为服务引用。

下面是代码

UserDetailsSvcClient userDetail = new UserDetailsSvcClient();
userDetail.Open();
UserDetails userDC = new UserDetails();
var userDetailsList = userDetail.UserDetailsSvc_Load(userDC);
userDetail.Close();

userDetailsList始终保持null.

此外,GetList智能方法也没有出现

在 C# 中调用智能对象方法

我假设您已在 K2 服务器上启用了端点。如果没有,请参阅以下内容,链接到端点创建PS:您需要重新启动K2服务器才能使更改生效。

从代码来看,似乎您正在尝试执行 Load 方法。加载方法将需要 ID。

因此,对于 UserDetails userDC = new UserDetails();,添加以下内容:

userDC.Id = 1;

至于GetList,你不需要向它传递UserDetails对象。

var userDetailsList = userDetail.UserDetailsSvc_GetList(Null);

问题是我没有授权客户端。我需要添加

userDetail.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;

所以最后代码看起来像这样

UserDetailsSvcClient userDetail = new UserDetailsSvcClient();
    userDetail.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;
userDetail.Open();
UserDetails userDC = new UserDetails();
var userDetailsList = userDetail.UserDetailsSvc_Load(userDC);
userDetail.Close();