Я прочитал сообщения и код для передачи ошибок ASP.NET MVC HandleError в ELMAH и преобразовал код в VB:
Imports System
Imports System.Web
Imports System.Web.Mvc
Imports Elmah
Public Class HandleErrorAttribute
Inherits System.Web.Mvc.HandleErrorAttribute
Public Overrides Sub OnException(ByVal context As ExceptionContext)
MyBase.OnException(context)
Dim e As Exception = context.Exception
If Not context.ExceptionHandled OrElse RaiseErrorSignal(e) OrElse IsFiltered(context) Then
' if unhandled, will be logged anyhow
'prefer signaling, if possible
'filtered?
Else
LogException(e)
End If
End Sub
Private Function RaiseErrorSignal(ByVal e As Exception) As Boolean
Dim context = HttpContext.Current
If context Is Nothing Then Return False
Dim signal = ErrorSignal.FromContext(context)
If signal Is Nothing Then Return False
signal.Raise(e, context)
Return True
End Function
Private Function IsFiltered(ByVal context As ExceptionContext) As Boolean
Dim config As ErrorFilterConfiguration = context.HttpContext.GetSection("elmah/errorFilter")
If config Is Nothing Then Return False
Dim testContext = New ErrorFilterModule.AssertionHelperContext(context.Exception, HttpContext.Current)
Return config.Assertion.Test(testContext)
End Function
Private Sub LogException(ByVal e As Exception)
Dim context = HttpContext.Current
ErrorLog.GetDefault(context).Log(New Elmah.Error(e, context))
End Sub
End Class
Однако я заметил, что когда я пытаюсь скомпилировать код, я получаю следующую ошибку от VS2008:
Error 3 Unable to emit assembly: Referenced assembly 'Elmah' does not have a strong name Main
В данный момент HandleErrorAttribute.vb находится в [папке с файлом SLN] \ Main \ HandleErrorAttribute.vb, а все представления, контроллеры и т. Д. Находятся в главной папке.
Если вы смогли заставить работать оригинальный код C #, как вы справились с ошибкой во время компиляции? (и, если вы заставите его работать в VB, это даже лучше)
Редактировать
Я уже пытался подписать его с помощью sn.exe:
C:\Program Files\Microsoft Visual Studio 9.0\VC>sn -R "C:\Documents and Settings
\zchoy\My Documents\Burrow\Code\Main\lib\Elmah.dll" "C:\documents and settings\z
choy\my documents\burrow\code\code signing key.pfx"
Microsoft (R) .NET Framework Strong Name Utility Version 3.5.30729.1
Copyright (c) Microsoft Corporation. All rights reserved.
C:\Documents and Settings\zchoy\My Documents\Burrow\Code\Main\lib\Elmah.dll does
not represent a strongly named assembly
Явно бесполезный.