2017-08-06 40 views
0

我试图使用GetUserPhoto REST请求记录在这里得到用户的照片流出的Microsoft Exchange:https://msdn.microsoft.com/en-us/library/office/jj190905%28v=exchg.150%29.aspx?f=255&MSPPError=-2147217396C#的WebRequest一个URL被配置为使用Windows身份验证

我的问题是,无论我做什么的连接被关闭自动并且无法使用NTLM进行身份验证。微软甚至提供了代码,但是当您在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。

回答

0

问题在于它没有尝试连接TLS 1.2。一旦它在我的脑中点击,错误信息是说连接关闭,并没有实际返回一个401.我用户ServiceManager将其设置为TLS1.2,然后它开始工作。

格伦尺度帮助指向我在正确的方向,但进一步排除故障。

2

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

+0

我看到的事情是仍在使用ASP.NET模拟和Windows身份验证,它将模拟用户登录到应用程序。 我更想使用运行该应用程序的凭据(应用程序池上的凭据)向Exchange EWS URL发出请求。 – Jacob

+0

但是,当使用应用程序池证书并且应该使用相同的解决方案时,这将是相同的委派问题。 –

+0

啊,所以我可以保持匿名身份验证,因为我使用窗体身份验证,但启用Windows身份验证和模拟可能允许凭据通过?我会试试 – Jacob

相关问题