在 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
智能方法也没有出现
我假设您已在 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();