1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Graph APIメール送信タイムアウトのエラーの解消:12002 calling WINHTTP_CALLBACK_STATUS_REQUEST_ERROR

Last updated at Posted at 2023-04-06

Graph APIのメール送信を開発時(c#)、下記のエラーが出ました。

「Error 12002 calling WINHTTP_CALLBACK_STATUS_REQUEST_ERROR, '処理がタイムアウトになりました'」
調べた結果は、パソコン端末のプロキシの原因になります。(WinHTTPの設定)
IEのインターネットオプションのプロキシ設定はWebブラウザでインターネットを利用する時に利用されます。
しかし、Windows Update等、システムが利用するプロキシ設定はWinHTTPという設定を利用します。
WinHTTPはGUIでは設定出来ないため、netshコマンドで設定します。

エラー内容

Error 12002 calling WINHTTP_CALLBACK_STATUS_REQUEST_ERROR, '処理がタイムアウトになりました'
Status Code: 0
Microsoft.Graph.ServiceException: Code: generalException
Message: An error occurred sending the request.
---> System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.WinHttpException: Error 12002 calling WINHTTP_CALLBACK_STATUS_REQUEST_ERROR, '処理がタイムアウトになりました'.
   場所 System.Threading.Tasks.RendezvousAwaitable`1.GetResult()
   場所 System.Net.Http.WinHttpHandler.<StartRequestAsync>d__122.MoveNext()
   --- 内部例外スタック トレースの終わり ---
   場所 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   場所 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   場所 Microsoft.Graph.RedirectHandler.<SendAsync>d__6.MoveNext()
--- 直前に例外がスローされた場所からのスタック トレースの終わり ---
   場所 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   場所 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   場所 Microsoft.Graph.RetryHandler.<SendAsync>d__9.MoveNext()
--- 直前に例外がスローされた場所からのスタック トレースの終わり ---
   場所 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   場所 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   場所 Microsoft.Graph.CompressionHandler.<SendAsync>d__2.MoveNext()
--- 直前に例外がスローされた場所からのスタック トレースの終わり ---
   場所 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   場所 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   場所 Microsoft.Graph.AuthenticationHandler.<SendAsync>d__16.MoveNext()
--- 直前に例外がスローされた場所からのスタック トレースの終わり ---
   場所 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   場所 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   場所 System.Net.Http.HttpClient.<FinishSendAsyncBuffered>d__58.MoveNext()
--- 直前に例外がスローされた場所からのスタック トレースの終わり ---
   場所 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   場所 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   場所 Microsoft.Graph.HttpProvider.<SendRequestAsync>d__19.MoveNext()
   --- 内部例外スタック トレースの終わり ---
   場所 Microsoft.Graph.HttpProvider.<SendRequestAsync>d__19.MoveNext()
--- 直前に例外がスローされた場所からのスタック トレースの終わり ---
   場所 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   場所 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   場所 Microsoft.Graph.HttpProvider.<SendAsync>d__18.MoveNext()
--- 直前に例外がスローされた場所からのスタック トレースの終わり ---
   場所 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   場所 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   場所 Microsoft.Graph.BaseRequest.<SendRequestAsync>d__40.MoveNext()
--- 直前に例外がスローされた場所からのスタック トレースの終わり ---
   場所 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   場所 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   場所 Microsoft.Graph.BaseRequest.<SendAsync>d__33.MoveNext()
--- 直前に例外がスローされた場所からのスタック トレースの終わり ---
   場所 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   場所 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   場所 System.Runtime.CompilerServices.TaskAwaiter.GetResult()
   場所 SmartWorksBatch.Program.<Main>d__7.MoveNext() 場所 Ctest\test\Program.cs:行 382

コマンドプロントでエラー対応方法

1.現在の設定の確認

netsh winhttp show proxy

image.png

2.IE設定のインポート

netsh winhttp import proxy source=ie

image.png

上記の二つ対応で、問題なくGraph APIメール送信ができました!

ソース側のエラーの解消

①プログラム側でWinHTTPのプロキシ設定する場合 :

//プロキシを設定する 
string[] bypass = new string[] { "*.test.co.jp", ";*.test.co.jp" }; 
string proxyAdress = "http://proxy.test.co.jp:8080"; 
var winHttpProxy = new WebProxy(proxyAdress, false, bypass); 

HttpClient httpClient = GraphClientFactory.Create(authProvider,proxy:winHttpProxy); 
var graphClient = new GraphServiceClient(httpClient);

②プログラム側でインターネットオプションのWinHTTPプロキシ設定と同じものを利用する場合 :

//IEのWinHTTPのプロキシ設定をインポート
var winHttpProxy = WebRequest.GetSystemWebProxy(); 

HttpClient httpClient = GraphClientFactory.Create(authProvider, proxy:winHttpProxy); 
var graphClient = new GraphServiceClient(httpClient);

参考サイト

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?