5 Stimmen

Wie kann man ein ASP.NET-Projekt so bereitstellen, dass sich kein Code in den .aspx-Dateien befindet?

Ich bin seit kurzem der Betreuer eines ASP.NET-Webprojekts. Bei der Bereitstellung einiger Änderungen haben wir festgestellt, dass sich die Art und Weise, wie das Projekt bereitgestellt wird, irgendwann geändert hat. Das Projekt ist ein Webanwendungsprojekt. Wenn ich es auf meinem lokalen Rechner "veröffentliche", kann ich die verschiedenen .aspx-Dateien öffnen und etwas Code sehen - ein wenig ASP, hauptsächlich JavaScript, aber der Großteil des Codes scheint in eine .dll kompiliert zu sein.

Was wir möchten, ist zu bauen und diese Anwendung bereitstellen, so dass es keinen Code in der .aspx-Dateien - das ist, wie es verwendet, um zu arbeiten, bevor die vorherige dev aufgehört, es zu pflegen. Es sollte kein Code in den .aspx-Dateien überhaupt, nur ein Verweis auf die kompilierten .dll-Dateien.

Weiß jemand, wovon ich spreche und wie man es einrichtet?

EDIT Wenn es hilft, sieht es so aus, als ob die ältere Version der Anwendung nur einen Text in den .aspx-Dateien hatte, der besagte: "Dies ist eine Markierungsdatei, die vom Vorkompilierungswerkzeug erzeugt wurde und nicht gelöscht werden sollte!" Das ist es, was ich anstrebe.

6voto

Tj Kellie Punkte 6158

Wenn Sie dies für Ihre Website tun möchten, kompilieren Sie Ihr Projekt nur für die Bereitstellung vor. Die genauen Schritte können Sie in diesem Artikel nachlesen MSDN-Artikel

Dadurch werden alle Codebehind-Dateien in die .dll verschoben und .aspx.compiled-Dateien als Zeiger auf die kompilierten Versionen in der .dll erstellt. Klingt wie das ist, was vorher getan wurde.

1voto

David Punkte 189311

Der Code sollte im Browser des Kunden nicht sichtbar sein.

Jeder Code, der in einer Code-Behind kompiliert wird, wird zu einer .dll auf die die Seiten in der Anwendung verweisen würden. Die eigentlichen Code-Behind-Dateien sollten nicht mit dem .aspx Dateien.

.NET-Code innerhalb der .aspx Dateien sollten auf der Client-Seite nicht sichtbar sein, da sie auf der Client-Seite keinen Nutzen haben. Er sollte auf der Serverseite ausgeführt werden, um die HTML-Ausgabe für den Client zu rendern. Wenn der .NET-Code in diesem Fall auf der Client-Seite sichtbar ist, bedeutet dies, dass der Server ihn nicht ausführt und die Website im Grunde genommen defekt ist.

JavaScript-Code, natürlich, braucht auf der Client-Seite sichtbar sein. Es gibt Möglichkeiten, den Code zu verschleiern, aber der Browser muss ihn sehen, um ihn ausführen zu können. In diesem Fall sollte der Code also in dem vollen Bewusstsein entwickelt werden, dass er ist öffentlich einsehbar sein, und es sollte nichts Geschütztes oder Kompromittierendes enthalten sein.

0voto

Mike Cole Punkte 13668

JavaScript-Code muss auf der Client-Seite vorhanden sein, also muss er auf dem Server liegen. Inline-ASP-Code? Ich würde mir überlegen, ob ich das in .NET umschreibe.

0voto

P.Brian.Mackey Punkte 41258

Um zu erreichen, dass kein Code in den .aspx-Dateien enthalten ist, müssen Sie den gesamten Code in den Code dahinter schreiben. Sie verwenden die asp.net-Ereignisse im Lebenszyklus, um die Generierung von Client-Code durchzuführen. Zum Beispiel könnten dynamisch generiertes HTML und Javascript im Page_Load generiert und als Antwort . Alle asp.net, die Sie verwenden können, muss dynamisch in den Code hinter mit allem anderen generiert werden.

Sie werden immer noch HTML und Javascript auf den Client übertragen, aber der gesamte Code wird in Assemblies/Dlls gespeichert, mit Ausnahme der Header-Informationen auf den Aspx-Seiten. Ich habe dies nur im Zusammenhang mit einem Webdienst getan ( RESTful ), bei dem ich XML an ein iPhone zum Konsumieren übertragen habe. Dies für eine vollständige Website zu tun, könnte sich als recht mühsam erweisen.

Es macht keinen Sinn, dies zu tun, wenn es um die Sicherheit geht. Das Verschieben des Codes in eine Assembly ist nicht viel sicherer als die aspx-Seite. Wenn es darum geht, übersichtlich zu bleiben, schlage ich vor, zu ASP.NET MVC 3 zu wechseln.

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