2

Web アプリケーションに Visual Studio 2010 と MVC 4 を使用しています。これは私のコントローラコードです:

public ActionResult MyController()

    {
        if (Request.IsAjaxRequest())
        {
            using (MyContainer context = new MyContainer())
            {
                try
                {
                    var result = Some Query;

                    return PartialView("_MyView", result);
                }
                catch (Exception ex)
                {
                    
                }
            }
        }
        if (User.Identity.IsAuthenticated)
        {
            return RedirectToAction("Index", "Home", new { area = "User" });
        }
        else
        {
            return Redirect("/");
        }
    }

このメソッドは正常に実行されますが、私の ajax コンテナーには何も表示されません。firebug では、このエラーが発生しました:

NetworkError: 500 Internal Server Error + http://localhost....?X-Requested-With=XMLHttpRequest

なぜこのエラーが発生するのですか?
この問題を解決するにはどうすればよいですか?
前もって感謝します!

4

1 に答える 1

1

500 Internal Server Error メッセージは、サーバー上で何かが正常に処理されなかったために、さまざまな方法で表示される可能性があります。あなたの場合、推奨されるように、あなたのMyContainerタイプはインターフェースを実装していないため、ブロックIDisposableでこのタイプを使用することはできません。usingusing(){ }ブロックで型を使用する場合、この型は IDIsposable を実装する必要があります。これは、.Net Framework がヒープと参照からインスタンスを削除するためです。ブロックを使用せずに、コードにいくつかの変更を加えました。見てみましょう:

public ActionResult ActionName()
{
    if (Request.IsAjaxRequest())
    {
        try
        {
            MyContainer context = new MyContainer();

            var result = Some Query;
            return PartialView("_MyView", result);      
        }
        catch (Exception ex)
        {
            // return some partial error that shows some message error
            return PartialView("_Error");
        }
    }

    if (User.Identity.IsAuthenticated)
    {
        return RedirectToAction("Index", "Home", new { area = "User" });
    }

    return Redirect("/");
}
于 2013-02-09T23:57:34.550 に答える