C#WebRequest到为Windows身份验证配置的URL

时间:2017-08-06 16:05:03

标签: exchangewebservices restsharp webrequest ntlm

我正在尝试使用此处记录的GetUserPhoto REST请求从Microsoft Exchange获取用户照片:https://msdn.microsoft.com/en-us/library/office/jj190905%28v=exchg.150%29.aspx?f=255&MSPPError=-2147217396

我的问题是无论我做什么,连接都会自动关闭,并且无法使用NTLM进行身份验证。 Microsoft甚至提供代码,但是当您在IIS Web应用程序中运行它时,即使它使用作为域用户运行的应用程序池,它也永远无法进行身份验证。

这是我目前的代码:

request = System.Net.WebRequest.Create($"https://{Settings.ExchangeServer}/ews/exchange.asmx/s/GetUserPhoto?email={primarySmtpAddress}&size=HR240x240") as System.Net.HttpWebRequest;

                        request.ServerCertificateValidationCallback = delegate { return true; };
                        request.UseDefaultCredentials = true;
                        resp = request.GetResponse() as System.Net.HttpWebResponse;

现在我可以将它放在一个控制台应用程序中并运行它然后它可以工作。但在IIS中,它根本就没有工作。我甚至没有运气就试过RestSharp。

1 个答案:

答案 0 :(得分:2)

听起来像委托问题,例如您冒充的凭据只能用于访问他们被模拟的IIS服务器本地资源。要访问Exchange,您需要正确配置委派,请参阅https://blogs.msdn.microsoft.com/emeamsgdev/2012/11/05/ews-from-a-web-application-using-windows-authentication-and-impersonation/