0

当我使用本地的 tridion 2011 核心服务编写自定义页面时,我使用我的 tridion 凭证来访问核心服务 web 服务。

现在,当一切都在我的本地完成时:),我发布了我的网站,并在 Tridion CM 服务器上简单地做了以下事情。

  • 在 IIS 中,我创建了名为“CoreServices”的新应用程序网站
  • 使用 Network USer 使用应用程序池
  • 在 coreservice 映射文件夹中复制了我发布的网站。
  • 从 Web 配置中删除了我的凭据并实现了读取访问网站/自定义页面的用户详细信息的逻辑
  • 现在,当我尝试访问 coreservice 网站时,出现以下错误

    用户 NT AUTHORITY\NETWORK SERVICE 的访问被拒绝。 说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

    异常详细信息: System.ServiceModel.FaultException`1[[Tridion.ContentManager.CoreService.Client.CoreServiceFault, Tridion.ContentManager.CoreService.Client, Version=6.1.0.996, Culture=neutral, PublicKeyToken=ddfc895746e5ee6b]]: 访问被拒绝用户 NT AUTHORITY\NETWORK SERVICE。

请建议!

编辑:我可以看到 NT AUTHORITY\NETWORK SERVICE 已经添加到我的 Tridion MMC 中,请看下面的截图:

在此处输入图像描述

4

2 回答 2

2

此消息表明您的代码已成功调用核心服务,并且您的网络凭据已成功识别,但 Tridion 未授予访问权限。这里有两种可能的情况:

  1. 您希望 Tridion 使用 NETWORK SERVICE 身份作为受托人在其下采取行动。在这种情况下,网络服务将被添加为用户。这将是一个不寻常的配置,因为您通常希望 NETWORK SERVICE 成为模拟用户以用于其他目的。
  2. 您希望作为网络服务连接到 Tridion,但随后让 Tridion 充当不同的受托人。在这种情况下,NETWORK SERVICE 应在管理管理单元中配置为模拟用户,并且您必须按照 John 链接到的问题 ( Tridion CoreService Authentication/Impersonation )中所述调用 Impersonate 方法

这两种方法中的第二种几乎可以肯定是您想要的。我实际上只是通过解释的方式描述了第一个。

于 2013-01-16T08:42:49.740 回答
1

试试这个,如果它适合你,我还没有尝试过,所以不确定它是否会起作用

var remoteAddress = new EndpointAddress(Settings.EndpointAddress);
ProxyClient = new CoreServiceClient(basicHttpBinding, remoteAddress);
ProxyClient.ClientCredentials.Windows.AllowNtlm = true;
ProxyClient.ClientCredentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials;
ProxyClient.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;
于 2013-01-17T18:34:23.483 回答