尝试Catch Not BadImageFormatException

Jon*_*Jon 3 .net c# asp.net-mvc dllimport asp.net-mvc-3

我有一个加载外部DLL的MVC应用程序,在生产中我根本没有错误.Firefox只是说连接已重置.所以我在代码中放了一些try/catch但它们仍然无法工作,我仍然得到连接重置消息.

我知道错误是BadImageFormatException,但为什么我在浏览器中看不到任何内容?

 public class HomeController : Controller
    {

        [DllImport("CDCrypt.dll")]
        [return: MarshalAs(UnmanagedType.LPStr)]
        public static extern String Encrypt([MarshalAs(UnmanagedType.LPStr)] String aName);



        [DllImport("CDCrypt.dll")]
        [return: MarshalAs(UnmanagedType.LPStr)]
        public static extern String Decrypt([MarshalAs(UnmanagedType.LPStr)] String aName);


        //
        // GET: /Home/

        public ActionResult Index()
        {

            try
            {
                ViewBag.EncryptString = Encrypt("test");
            }
            catch (Exception e)
            {
                ViewBag.EncryptString = "Stack Trace\r\n:" + "\r\nException: " + e.Message;
                return new HttpStatusCodeResult(500);
            }
            return View();
        }

        public ActionResult Up()
        {
            ViewBag.Up = "You can see me";
            return View();
        }



    }
Run Code Online (Sandbox Code Playgroud)

Sam*_*der 5

似乎有一些例外被标记为不可恢复,因此无法捕获. 这个问题(这个答案真的很好)有一个列表,但我不知道这是多么详尽.

本文提供了一些关于无法捕获的异常的更多信息,以及如何抛出它们可以捕获它们,但如果运行时抛出它们则不会捕获它们.

这个问题说,做一个catch而不是一个catch(Exception ex)将允许COM异常被捕获.不知道这是否会有所帮助(我对此表示怀疑)但是很有意思,并且可能.