1

您好我有一个 SharePoint Webpart,它被编译为 DLL 并放置在我的 SP 站点的 BIN 文件夹中。我的 webpart 在我的本地机器上工作,但是当我把它投入生产时它失败了

(401) Unauthorized.

在做了一些研究之后,我发现了所谓的“单跳规则”。这意味着我必须传递网络用户的凭据,或者使用

<identity impersonate= "true" />

在我的 web.config 中。我不想对网络用户进行硬编码,所以我的问题是如何在我的 Web 部件中使用模拟?dll 是否支持 web.configs?谢谢您的帮助。

4

5 回答 5

4

您的 webpart 生产失败可能是因为 CAS;您可能需要提升权限级别或附加要授予您的程序集的特殊访问权限,因为它不完全受信任,因为它位于 bin 文件夹中。

如果你确定这只是一个模拟问题,你能不能只在你的 web.config 中使用节点?

于 2009-03-17T13:52:59.453 回答
2

在 SharePoint 应用程序的 web.config 中,Impersonate 始终设置为 true,因此问题肯定出在其他地方。部署到 Web 应用程序的 BIN 文件夹的 Web 部件在沙箱中运行,并且默认情况下具有有限的权限。也许这就是问题的根源。

于 2009-03-17T14:04:29.393 回答
1

是的,正如 Tudor 所提到的,它很可能是代码访问安全性。如果你把它放在 GAC 中,你就不会遇到这个问题(GAC 是完全信任的)。

下面是一些可以帮助您使用 CAS 和 SharePoint Web 部件的文章。诀窍是知道您需要哪些 IPermissions。

于 2009-03-17T19:16:39.393 回答
0

我认为没有办法在 DLL 中添加它。反正据我所知。

于 2009-03-17T13:46:11.733 回答
0

如果您正在查看“双跳”问题,那么您将不会使用 NTLM。您需要使用 Kerberos 身份验证,因为 Kerberos 票证可以从用户跳到 Web 服务器再到 Web 服务。您需要使用 SetSPN 设置服务主体名称。

此 Web 部件是否调用外部 Web 服务?还是基于本地安全的权限错误?

于 2009-03-17T19:19:45.393 回答