我在并行调用 WCF 服务时遇到问题。我正在尝试使用 Tasks 来并行调用两个服务以节省一些时间(我不是试图使这个异步),但我的任务正在作为另一个用户运行。这两个服务都需要 Windows 身份验证,并且两个调用都失败,因为调用该服务的用户没有所需的权限。
调用代码(下面的代码)位于运行 IIS 7.5 的 ASP.NET MVC4 中的控制器操作内。所有涉及的应用程序池都设置为允许 ASP.NET 模拟并要求 Windows 身份验证(所有其他方法设置为禁用)。
// Parallel service request to two services
Task<object>[] tasks = new Task<object>[2];
// this shows my credentials, e.g. "MYDOMAIN\\MyUsername"
var userMe = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
tasks[0] = Task<object>.Factory.StartNew(() =>
{
// this shows "IIS APPPOOL\\DefaultAppPool"
var user = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
var data = client1.MyMethod();
return data;
});
tasks[1] = Task<object>.Factory.StartNew(() =>
{
// this shows "IIS APPPOOL\\DefaultAppPool"
var user = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
var data = client2.MyMethod();
return data;
});
Task.WaitAll(tasks);
我的问题:如何指示任务以当前用户身份运行,而不是以“IIS APPPOOL\DefaultAppPool”用户身份运行?