C # - Benutzerdefiniertes Attribut wurde nicht von GetCustomAttribute von Interface gefunden

8

Ich versuche, ein benutzerdefiniertes Attribut wie das folgende einzurichten:

%Vor%

In meiner Servicevertragsschnittstelle habe ich eine Methode wie diese:

%Vor%

Wenn ich folgendes mache, sehe ich es in der Liste, aber der 'ist' Vergleich schlägt fehl:

%Vor%

Ich habe versucht, folgendes zu tun, was false zurückgibt:

%Vor%

Ich habe auch die folgenden 2 Dinge getan, die null zurückgeben:

%Vor%

Ich bin mir nicht sicher, was ich hier falsch mache. Es scheint, als ob es funktionieren sollte, aber ich bin mir sicher, dass ich irgendwo einen einfachen Fehler mache. Irgendeine Einsicht?

Danke für jede Hilfe.

Bearbeiten: Ich bin mir nicht sicher, ob es eine Bedeutung hinzufügt, aber die AuthorizationAttribute-Deklaration existiert in einem anderen Projekt als mein Services-Projekt. Die Servicevertragsschnittstelle existiert im selben Projekt wie das AuthorizationAttribute.

Ich habe versucht, einen Cast zu machen und habe die folgende Ausnahme:

%Vor%

Irgendwelche Ideen?

    
Brandon 13.04.2011, 16:57
quelle

2 Antworten

1

Dank Wesleys Antwort konnte ich das herausfinden. Es ist mehr ein "Duh" -Moment als alles andere.

Ich habe einen Beispielcode für die Reflektion verwendet, um eine Assembly über die Assembly.LoadFile (...) -Methode zu laden. Das Problem ist, dass, da meine Assembly nicht beim GAC registriert war, sie die lokale Kopie auf dem IIS-Server gelesen hat und der Vergleich fehlgeschlagen ist.

Als Referenz war dies meine Lösung:

%Vor%

Sobald ich das getan habe, hat alles funktioniert.

    
Brandon 13.04.2011, 19:35
quelle
5

Die Ausnahme enthält die Antwort:

  

Typ A stammt ... von der Position 'F: \ RestServices \ bin \ Lib.dll'. Typ B entsteht ... vor Ort   'C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporäre ASP.NET-Dateien \ oauth_rest \ 951069b9   \ 9f7b77fe \ assembly \ dl3 \ 54c48906 \ f928a6ad_01facb01 \ Lib.dll '

Das Problem besteht darin, dass der Typ Lib.OAuth.AuthorizationAttribute , der Ihre Methode attributiert, in einer Assembly gefunden wird, die sich von der Assembly unterscheidet, die zur Laufzeit geladen wird, wenn Sie versuchen zu konvertieren.

Ist es möglich, dass eines Ihrer Projekte eine alte Version von Lib.dll verwendet?

    
Wesley Wiser 13.04.2011 17:56
quelle

Tags und Links