🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
IIS

IIS(Internet Information Services)はマイクロソフト社によって開発されたwebサーバーです。Windows上で動作します。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

ASP.NET MVC Framework

ASP.NET MVC Frameworkは、MVCパターンをベースとした、マイクロソフトのウェブアプリケーション開発用のフレームワークです。

ASP.NET Web API

ASP.NET Web APIはブラウザやモバイル機器のようなクライアント向けのHTTPサービスを構築するフレームワークです。Microsoft .NET Frameworkがベースになっており、RESTfulサービスを構築するには理想的です。

Q&A

解決済

1回答

8366閲覧

ASP.net 時間のかかるWebAPI呼び出して、502bad gatewayとなる

taptaptaptap

総合スコア5

IIS

IIS(Internet Information Services)はマイクロソフト社によって開発されたwebサーバーです。Windows上で動作します。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

ASP.NET MVC Framework

ASP.NET MVC Frameworkは、MVCパターンをベースとした、マイクロソフトのウェブアプリケーション開発用のフレームワークです。

ASP.NET Web API

ASP.NET Web APIはブラウザやモバイル機器のようなクライアント向けのHTTPサービスを構築するフレームワークです。Microsoft .NET Frameworkがベースになっており、RESTfulサービスを構築するには理想的です。

0グッド

0クリップ

投稿2019/10/24 05:04

編集2019/10/24 06:25

前提・実現したいこと

Y.Hさまのご指摘のおかげで、原因は判明致しました。
<追加の質問>
知識が乏しく、大変恥ずかしいのですが、IISの設定で、プロキシサーバのタイムアウト時間を変更することは、できるのでしょうか。
なんとなく、プロキシサーバより先に存在するwebサーバにそのような設定ができるとは思えないですが、IISの設定で解決できると、プログラムの修正は行わなくて済むかなと思った次第です。

<前回の質問>

時間のかかるwebAPI(90秒以上かかる処理)をajaxでpostで呼出しを行うと、きっちり90秒で、502 bad gatewayエラーとなります。
サーバでの処理は、引き続き行われており、再度アクセスするとデータは登録されています。

実現したいことは、タイムアウト時間を伸ばしたいです。

どうか、お力を貸して頂けると助かります。

【動作環境】
IIS 7.0
ASP.net C# (MVC)
jquery

発生している問題・エラーメッセージ

502 bad gateway

該当のソースコード

javascript $.ajax(url, { type: 'POST', contentType: 'application/json; charset=utf-8', data: JSON.stringify(updateData), timeout:0 }) .done(function (reply) { if (reply.error) { alert(reply.error); return; } }) .fail(function () { alert('connection error');  ←ここで、502エラー受信 }) .always(function () { }); サーバ [HttpPost] public ContentResult test(string number) { System.Threading.Thread.Sleep(120*1000); var content = "{}"; return new ContentResult { Content = content, ContentType = ContentTypes.Json, }; }

試したこと

IISの設定のデフォルトタイムアウトが90秒のものは、一通り2分ぐらいに変更して試してみましたが、90秒で502エラーとなります。

・呼び出したwebAPIの先頭処理にて、Server.ScriptTimeoutに、200秒を設定
・IISのexecutionTimeoutを変更
・IISのshutdownTimeoutを変更
・IISのアプリケーションプールのPingの有効化を無効
・IISの構成エディタ「system.webServer/asp」のScriptTimeoutを変更

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Y.H.

2019/10/24 05:17

・クライアントからサーバーへの接続はProxyサーバーなどは経由していませんか? ・サーバー側はリバースProxyなど経由しAPIサーバーへリクエストされてませんか?
taptaptaptap

2019/10/24 05:28

返信頂き、ありがとうございます。 ご指摘の通り、対象のwebサーバを、プロキシサーバを使用しないに追加したところ、 エラーにならなくなりました。 プロキシサーバからのエラーだったのですね。 ありがとうございました。 ということは、仕組みを再検討する必要がありそうです。
guest

回答1

0

ベストアンサー

IISの設定で、プロキシサーバのタイムアウト時間を変更することは、できるのでしょうか。

プロキシーサーバーを経由してアクセスされる先のサーバーでは変更できません。

プロキシーサーバー自体の設定でタイムアウトの設定があると思うので、プロキシーサーバーの設定を変更してください。
製品によっては接続先のサーバー毎に個別に設定できる可能性があるかもしれません。

プロキシーサーバーが質問者さんの管理下にない場合は変更可能か相談されてはどうでしょう。

投稿2019/10/24 06:43

Y.H.

総合スコア7918

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

taptaptaptap

2019/10/24 06:47

何度も回答くださり、ありがとうございました。 プロキシーサーバーは、私の管理下には、ありませんので、管理者の方に相談してみようと思います。 大変助かりました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問