有sharepoint 2003。开发的Web 部件。
当用户访问 Web 部件时,然后在服务器端通过身份验证。
我需要在 Web 部件中向 Web 应用程序发送请求。当我向部署 Web 应用程序的服务器发送请求时,尝试登录部署 Web 部件的服务器帐户。
当我向部署它的服务器发送请求时,我需要它 用于对访问 Web 部件的用户帐户进行身份验证的 Web 应用程序。
身份验证类型:NTLM
Web 部件如何转向访问该 Web 部件的用户名的 Web 应用程序?
找到了两种可能的解决方案:
1.在WebPart中添加Web.config,内容如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<authentication mode="Windows" />
<identity impersonate="true" />
</system.web>
</configuration>
它没有帮助。目前尚不清楚为什么。
2.使用以下代码:
WindowsIdentity winId = (WindowsIdentity)Context.User.Identity;
WindowsImpersonationContext ctx = null;
try
{
// Start impersonating.
ctx = winId.Impersonate();
// Now impersonating.
// Access resources using the identity of the authenticated user.
_autocompleteService.SendParametersForAutoComplete(_loger,
new KeyValuePairString("performerId", performerId),
new KeyValuePairString("templatePath",
StringConverter.EncodeToURL(templatePath)),
new KeyValuePairString("specificationId", specificationId),
new KeyValuePairString("buyerId", buyerId),
new KeyValuePairString("performerCompanyId", performerCompanyId),
new KeyValuePairString("reestrItemId", reestrItemId),
new KeyValuePairString("sessionId", sessionId));
}
// Prevent exceptions from propagating.
catch
{
}
finally
{
if (ctx != null) ctx.Undo();
}
此代码取自链接:http: //msdn.microsoft.com/en-us/library/aa480475.aspx
它没有帮助。目前尚不清楚为什么。
在这两种情况下可能是什么原因?