4 Stimmen

HttpHandler mit Standard-Namensraum

Ich habe einen HttpHandler namens Handler, die ich in eine DLL kompilieren und in den /bin-Ordner meiner ASP.NET-App setzen. Dann habe ich eine .ashx-Datei:

<% @ webhandler language="C#" class="Handler" %> 

aber ich bekomme eine kann Typ 'Handler' nicht erstellen Fehler.

Wenn ich jedoch Handler in einen unentgeltlichen Namespace verpacke, sagen wir foo und ändern Sie die .ashx in

<% @ webhandler language="C#" class="foo.Handler" %> 

es funktioniert gut. Warum kann ich keinen Namespace, äh, den Standard-Namespace verwenden? Microsoft lässt in vielen Beispielen für HttpHandler auf der msdn-Website einen Namespace weg.

3voto

this. __curious_geek Punkte 41801

Das liegt an der Natur von .Net Assemblies. Jeder Reference Type oder ValueType muss von einem Namespace umschlossen werden. Namespaces werden für die logische Gruppierung verwendet. In Ihrem Fall ist Ihre Klasse 'Handler' ein benutzerdefinierter Referenztyp. Jede Assembly kann einen oder mehrere Root-Namensräume an der Root haben, aber sie kann keinen Referenztyp oder Werttyp an der Root haben. Wenn Sie ein neues Klassenbibliotheksprojekt auf der Registerkarte "Anwendungen" der Projekteigenschaften erstellen, haben Sie die Möglichkeit, den Standard-Namensraum für Ihr Klassenbibliotheksprojekt festzulegen. Jedes Mal, wenn Sie eine neue Klasse in Ihrem Projekt erstellen, wird diese um diesen Standard-Namensraum, der in ProjectProperties.Application.DefaultNameSpace angegeben ist, herumgewickelt.

Wenn Sie dies in Aktion sehen möchten, versuchen Sie, Ihre .Net Assembly mit IL Disassemblar zu öffnen, das mit dem .Net SDK geliefert wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X