3

我正在使用 Ektron(rrot/Workarea/Services)中的 WCF 服务。当我尝试使用以下代码在客户端中使用 ContentService.svc 服务时,

   ContentManagerClient cClient = new ContentManagerClient();
   UpdatedContentService.ContentData data = new UpdatedContentService.ContentData();
   data.m_strTitle = "test";
   data.m_strHtml = "test";
   data.m_intFolderId = 72;
   data.m_intUserId = 1;
   cClient.Add(data);

我收到以下错误“当前用户无权执行此请求”。我如何验证 ektron 用户以从客户端执行此操作?

4

1 回答 1

0

您在 ektron 开发论坛上收到的答案很好。(对于有同样问题的任何人的事先讨论:http: //developer.ektron.com/forums/ ?v=t&t=1280 )

您将需要使用 Auth 服务,而不是内容服务。这可以使用以下步骤来完成:

  1. 为 Web 服务创建代理对象:针对您的 Web 服务地址运行 .Net 工具 wsdl.exe,例如 http://localhost:/Workarea/webservices/AuthService.asmx
  2. 通过运行“csc /t:library AuthenticationService.cs”编译成 DLL: 添加 DLL 作为对 DLL 或控制台应用程序的引用 将 DLL 复制到项目中的 Lib 文件夹
  3. 添加 DLL 作为 DLL 或控制台应用程序的引用 将 DLL 复制到项目中的 Lib 文件夹右键单击“添加引用”并浏览到您创建的代理 DLL。添加 System.Web.Services 作为对 DLL 或控制台应用程序的引用
  4. 从您的应用程序调用代理代码:

    AuthenticationService auth = new AuthenticationService();
    IAsyncResult response = auth.BeginisValidUser(username, password, etc...);

可以在以下位置找到一个工作代码示例:http: //developer.ektron.com/Templates/CodeLibraryDetail.aspx ?id=1036&blogid=116

此示例改编自 VooDoo 引入内容服务的工程示例:http: //ektroneering.blogspot.com/2011/01/accessing-ektron-from-dll-or-console.html

于 2013-07-12T16:57:57.133 回答