Различные версии msvcrt в ctypes

Код взят от http://blogs.microsoft.co.il/blogs/shay/archive/2009/03/06/real-world-error-hadnling-in-asp-net-mvc-rc2.aspx и работает в ASP.net MVC 1.0 также

, Вот то, как я обрабатываю http исключения:

protected void Application_Error(object sender, EventArgs e)
{
   Exception exception = Server.GetLastError();
   // Log the exception.

   ILogger logger = Container.Resolve();
   logger.Error(exception);

   Response.Clear();

   HttpException httpException = exception as HttpException;

   RouteData routeData = new RouteData();
   routeData.Values.Add("controller", "Error");

   if (httpException == null)
   {
       routeData.Values.Add("action", "Index");
   }
   else //It's an Http Exception, Let's handle it.
   {
       switch (httpException.GetHttpCode())
       {
          case 404:
              // Page not found.
              routeData.Values.Add("action", "HttpError404");
              break;
          case 500:
              // Server error.
              routeData.Values.Add("action", "HttpError500");
              break;

           // Here you can handle Views to other error codes.
           // I choose a General error template  
           default:
              routeData.Values.Add("action", "General");
              break;
      }
  }           

  // Pass exception details to the target error View.
  routeData.Values.Add("error", exception);

  // Clear the error on server.
  Server.ClearError();

  // Avoid IIS7 getting in the middle
  Response.TrySkipIisCustomErrors = true; 

  // Call target Controller and pass the routeData.
  IController errorController = new ErrorController();
  errorController.Execute(new RequestContext(    
       new HttpContextWrapper(Context), routeData));
}

7
задан Eli Courtwright 28 August 2009 в 18:05
поделиться

1 ответ

Это не просто ctypes .cdll.msvcrt существует автоматически, но ctypes.cdll.anything автоматически существует и загружается при первом доступе, загружая something.dll . Итак, ctypes.cdll.msvcrt загружает msvcrt.dll , библиотеку, которая входит в состав Windows. Python связывается не со средой выполнения C, поэтому вы не должны вызывать malloc / free из msvcrt .

Например, для Python 2.6 / 3.1 вы должны использовать ctypes .cdll.msvcr90 . Поскольку это со временем изменится,

10
ответ дан 7 December 2019 в 01:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: