2017-08-06 3 views
0

用に設定されているURLに私はここに文書化さGetUserPhoto REST要求を使用してMicrosoft Exchangeの外のユーザーの写真を取得しようとしています:https://msdn.microsoft.com/en-us/library/office/jj190905%28v=exchg.150%29.aspx?f=255&MSPPError=-2147217396C#のWebRequest 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