Usando ELMAH con ASP.NET MVC en VB: Compilación: Elmah no tiene un nombre seguro
-
20-09-2019 - |
Pregunta
He leído a través de los mensajes y el código para el paso de los errores ASP.NET MVC handleError a ELMAH y convertido el código de 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
Sin embargo, he notado que cuando intento compilar el código, me sale el siguiente error de VS2008:
Error 3 Unable to emit assembly: Referenced assembly 'Elmah' does not have a strong name Main
En este momento, HandleErrorAttribute.vb vive en [carpeta con el archivo SLN] \ Main \ HandleErrorAttribute.vb y las vistas, controladores, etc. son todos bajo la carpeta principal.
Si fueron capaces de obtener el C # código original para trabajar, ¿cómo se consigue evitar el error de tiempo de compilación? (Y, si lo ha hecho para trabajar en VB, que es incluso mejor)
Editar
Ya he intentado firmar con 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
Es evidente que inútil.
Solución
Cuando tuve este problema, descargado el código fuente abierto y ELMAH arriba en Visual Studio. Luego utiliza la pestaña de firma en las propiedades del proyecto para firmar el ensamblado, a continuación, compilado mi propia versión de Elmah.dll.
A continuación, he vinculado esta versión firmada en mi proyecto principal.
Otros consejos
Parece que necesitas para firmar el ensamblado Elmah de modo que tenga un nombre seguro.