2012-02-13 19 views
0

に対処する私はこのようなコントローラのアクションがあります。HttpExceptionが、私は例外をユーザが未処理だったことを私に知らせるのVisual Studioからプロンプトを取得スローされたとき、私は、私のサイトをデバッグしています未処理HttpException

public ActionResult Index(string url) 
{ 
    var pageTitle = url.Split('/')[0]; 
    var page = Services.PageService.GetPage(pageTitle); 

    if (page == null) 
    { 
     throw new HttpException((Int32) HttpStatusCode.NotFound, "NotFound"); 
    } 

     return View(page); 
} 

毎回コード。

私は、自分がやっていることが正しいこと、そしてこの通知が心配することなく解消できることを誰かに明確に伝えてほしいと思います。このイベントは、私が実際にHttpExceptionを処理しているGlobal.asaxファイル内のApplication_Errorメソッドまで泡立ちます。唯一の問題は、この例外がスローされるたびにVSの不便さを伝えることです。

+0

私は右のように見えます。http://www.tugberkugurlu.com/archive/asp-net-mvc---throwing-404-exceptions-manually-from-controller-when-model-is-null –

答えて

0

私がやっていることは、正確に であることを明確にしたいと思うし、この通知は心配することなく却下することができます。

はい、あなたが見ているのはfirst chance exceptionです。 VSデバッガは、コード内で発生しているすべての例外を通知します。この例外のための適切なハンドラがあるなら、あなたはうまくいくはずです。

+0

こんにちはダーリン、私が持っていたすべての心配を押しつぶされた迅速な答えに感謝します。 – Chris

-1

あなたのページのユーザー/消費者にhttpコード(この場合は404)を返信したいとします。ですから、むしろこれを行う必要があります。

public ActionResult Index(string url) 
{ 
    var pageTitle = url.Split('/')[0]; 
    var page = Services.PageService.GetPage(pageTitle); 

    if (page == null) 
    { 
     return new HttpNotFoundResult(); 
    } 
     return View(page); 
} 

HttpNotFoundResultはasp.net-mvc3で新しいのActionResultあり、また同じことを行い、コントローラクラスの一部として保護された方法HttpNotFound()があります。どちらの場合でも、メッセージ文字列を指定することもできます。

私はunit-testingという点では、より効果的であると考えています。

+0

HttpNotFoundResultはビューを表示しません。単にステータスコードを404に設定し、空の結果を返します。詳細については、[this post](http://stackoverflow.com/questions/4985550/how-to-return-a-view-for-httpnotfound-in-asp-net-mvc-3)を参照してください。 – jbaum012

+0

@ jbaum012私は答えが間違っているかどうか分かりません。 OP(約2年前)は、視覚的なスタジオ・ブレイクを持たない方法ではなく、視点を描かないように頼んでいました。リンクされた回答でも同じことが指定されていますが、さらに404が返すHTMLを指定する必要があることだけが記載されています。私の意見では別のことです。また、OPは、例外が完全性チェックであるという事実に関する疑惑を確認したがっています。それは今私がそれを読むことから告げることができるものです。 – gideon

+0

私は怒らないことを意味しませんが、私はちょうどあなたのソリューションが誤解を招くのを発見します。 HttpNotFoundResultは、新しいHttpExceptionをスローするための適切な代替手段ではありません。たとえば、web.configでカスタムエラーページを指定する場合、 'return new HttpNotFoundResult'はカスタムエラーページを表示しません**。 – jbaum012