2009-02-23 24 views
74

アプリケーションで特定のコントローラアクションの要求タイムアウトを増やしたいとします。私はアプリケーション全体のためにweb.configでそれを行うことができることを知っていますが、私はむしろこの1つのアクションでそれを変更したいと思います。asp.net mvcアプリケーションで1つのコントローラアクションの要求タイムアウトを設定するには

のWeb.config例:

<system.web> 
    <httpRuntime executionTimeout="1000" /> 
</system.web> 

私はそれをどのように行うのですか?

+0

[ASP.NET MVCとのhttpRuntime executionTimeout]の可能な複製を(http://stackoverflow.com/questions/492346/asp-net -mvc-and-httpruntime-executiontimeout) – balexandre

+0

@balexandreいいえ。 – AgentFire

答えて

100

あなたがコントローラでプログラムこれを設定することができます - (?何奇数デフォルト)

HttpContext.Current.Server.ScriptTimeout = 300; 

は5分の代わりに、デフォルトの110秒にタイムアウトを設定します

+26

AsyncControllerの出現により、非同期要求に対して同様の効果を得るには、[AsyncTimeout]プロパティを使用する必要があります。 – Jason

+6

この回答の質問には、本当にそれが置かれた1つのアクションにどのように影響するのでしょうか?だから、リクエストが完了した後、その設定は今後のすべてのリクエストに返されますか? – jhilden

+7

@jhilden HttpContextは要求ごとにインスタンス化されるため、次のリクエストでデフォルト値に戻ります。 – reddy

49
<location path="ControllerName/ActionName"> 
    <system.web> 
     <httpRuntime executionTimeout="1000"/> 
    </system.web> 
</location> 

をおそらくそれがありますコントローラの代わりにweb.configでそのような値を設定する方がよいでしょう。構成可能なオプションのハードコーディングは有害であると考えられます。

+9

-1ハードコーディングは、OPが説明しているように特殊な状況では問題ありません。特定のアクションが残りのアクションとは異なるタイムアウトを必要とするように聞こえるので、アクション内のハードコーディングは良い場所のように聞こえる。 – Levitikon

+10

まだこれは最も正しい答えです... – Eric

+4

executionTimeoutはMVCで動作しません - これは間違った答えです。 ここをクリックしてください:http://forums.asp.net/p/1715081/4723882.aspx?Re+web+config+executionTimeout+not+working+in+ASP+NET+MVC – jfren484

16

私は.NET 4.5を使用して、 "現在" を追加しました:

HttpContext.Current.Server.ScriptTimeout = 300; 
関連する問題