Frage

ich eine Reihe von .NET-Klassenbibliotheken entwickeln, und ich will mich nicht von einer Website laufen. Das heißt, dass Benutzer nur meine Bibliotheken durch Anwendungen Windows-Desktop verwenden / nennen. Zum Beispiel möchte ich nicht die Benutzer diese Bibliotheken in einer ASP.NET Web-Anwendung zu verwenden, um die Lage sein, auf einer Website. Gibt es einen Weg, um dieses?

zu erreichen
War es hilfreich?

Lösung

Sie können den Code vom Laufen in einem serverseitigen ASP.Net AppDomain verhindern, indem geprüft wird, ob HttpRuntime.AppDomainAppVirtualPath nicht null ist und eine Ausnahme zu werfen.

Sie jedoch, dass nicht jemand aus laufen Ihre Anwendung in einer separaten AppDomain von ASP.Net zu stoppen, und es wird sicherlich nicht Anschlag jemand aus der App als Service runnng und es ASP.Net mit WCF oder dem Namen aussetzt Rohren.

Warum versuchen Sie, dies zu tun?

Bearbeiten : Kommentar zu beantworten, die auch unmöglich ist, perfekt zu tun. Sie könnten die HOST-Header überprüfen, und jemand könnte es SimpleWorkerRequest mit besiegen.
Darüber hinaus kann alles durch Bearbeiten der Versammlung geschlagen werden. (No obfuscator ist perfekt)

Andere Tipps

Nein. Auch wenn die Ausführung unter IIS Ihre Bibliothek zu stoppen ist, jemand noch eine Desktop-Anwendung mit Ihrer Bibliothek laufen konnte, und mit ihm kommuniziert von IIS.

Nein, nicht wirklich.

Allerdings, je nachdem, was Ihre Anwendung ist Sie in der Lage sein, kann es die Anwendung für den Online-Einsatz zu lähmen. Wenn Sie benannte Mutex verwenden können Sie sicherstellen, nur 1 Betrieb jemals zu einem beliebigen Zeitpunkt gestartet wird. Ähnliche 1 Instanz von einer Desktop-Anwendung zu starten, stellen Sie sicher, dass alle Anrufe zu DoWork () beispielsweise sequentiell sind.

Dies bedeutet, dass das Web, können sie nicht wiederholt Anrufe tätigen. Aber es ist davon abhängig, wie Sie es die Verwendung in einer Desktop-Anwendung ins Auge fassen.

So wie die anderen Lösungen nicht sehr sicher, aber Sie könnten überprüfen, ob eine Nachricht Schleife läuft Application.MessageLoop das in der Regel gilt für WinForms-Anwendungen, aber nicht für Web-Anwendungen sein sollte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top