2

ローカルホスト経由で同じサーバー上の .NET 2.0 統合モードで Web サービス (ASMX) を呼び出す .NET 4.0 統合モードの Web アプリケーションがあります。

10 回のうち 9 回はすべて正常に動作しますが、Web アプリケーションで呼び出し中に「要求がタイムアウトしました」および「スレッドが中止されました」というエラーが発生することがあります。このコード例の最後の行でエラーが発生します。

 Dim Service As New localhost.Service
 Dim Input As New localhost.InputProduct
 Dim Ret As New localhost.OutputProduct 
 Try
     Ret = Service.RequestProduct(Input) 
 Catch 
 Finally
   Service.Dispose()    
   If Ret.succesfull = True Then
      If Response.IsClientConnected = True Then
         Response.Redirect("success.aspx", False)
      End If    
   End If 
End Try

Web サービスのログ ファイルで、sc-win32-status: 995 と sc-status: 200 を取得します。通常、所要時間は常に 60 秒を少し超えています (所要時間: 62743)。通常、これはエラーなしで完了するのに 14 秒かかります。

ボタンがクリックされた後、呼び出しは ASPX ページのコード ビハインドで行われます。ページには Updatepanel があり、ボタンは PostBackTrigger として使用されます。

質問: Web サービスの呼び出し後に「要求がタイムアウトしました」というエラーが表示されるのはなぜですか?

サーバ:

  • Windows Server 2008 R2 SP1
  • IIS7.5
  • マイクロソフト URL スキャン 3.1
  • Windowsファイアウォール
4

2 に答える 2

2

私はついにこの問題の答えを見つけました。web.config の次のコードであることが判明しました。

<pages smartNavigation="true">

これをオフにすると、タイムアウト エラーが発生しなくなりました。タイムアウトの理由はおそらく、smartNavigation 設定が IE ブラウザーで生成する IFRAME です (Firefox/Chrome ではありません)。

.NET 2.0 でこの設定を使用して、ナビゲーションによるフラッシュを排除しました。.NET 4.0 Visual Studio にアップグレードした後、この設定が非推奨であるという手がかりが得られませんでした。

対処すべき別の問題があったため、答えを見つけました。.NET 4.0 用の最新のajaxToolkitを使用した後、AutoCompleteExtender の使用中に IE7/8 で次の JavaScript アラート エラーが発生しました。

行のスタック オーバーフロー: 0

これは、smartNavigation の設定に関連していることが判明しました。したがって、この設定を削除すると、2 つの問題が同時に修正されます。私にとっては、インターネットの短い歴史の中で最も厄介なエラーの 1 つだったので、これで誰かを助けてくれることを願っています。

于 2013-03-05T15:41:55.700 に答える
0

Web サーバーの machine.config にある httpRuntime executionTimeout = "xxx" タグを変更することを検討してください。デフォルトは、状況によっては 2 つ短くなる場合があります。秒で表される値は、2 倍にすることを検討してください。

于 2012-12-05T03:03:06.023 に答える