Как я могу ограничить / предотвратить выполнение кода .net в Интернете? - PullRequest
0 голосов
/ 09 февраля 2010

Я разрабатываю серию библиотек классов .NET и не хочу, чтобы они запускались с веб-сайта. То есть пользователи могли использовать / вызывать мои библиотеки только через настольные приложения Windows. Например, я не хочу, чтобы пользователи могли использовать эти библиотеки в веб-приложении ASP.NET, на веб-сайте. Есть ли способ добиться этого?

Ответы [ 4 ]

4 голосов
/ 09 февраля 2010

Вы можете запретить запуск своего кода в серверном домене приложений ASP.Net, проверив, является ли HttpRuntime.AppDomainAppVirtualPath не null, и выдав исключение.

Однако это не остановит кого-либо от запуска вашего приложения в отдельном домене приложений от ASP.Net, и, безусловно, не остановит кого-то от запуска приложения как службы и предоставления его ASP.Net с использованием WCF или по имени трубы.

Почему вы пытаетесь это сделать?

РЕДАКТИРОВАТЬ : Чтобы ответить на ваш комментарий, это также невозможно сделать идеально. Вы можете проверить заголовок HOST, и кто-то может победить его, используя SimpleWorkerRequest.
Кроме того, все можно побить редактированием сборки. (Без обфускатора идеально)

4 голосов
/ 09 февраля 2010

Нет. Даже если бы вы не позволили вашей библиотеке работать под IIS, кто-то мог бы запустить приложение для настольной системы вместе с вашей библиотекой и связываться с ним из IIS.

1 голос
/ 09 февраля 2010

Нет, не совсем.

Однако, в зависимости от вашего приложения, вы можете нанести вред его приложению для использования в Интернете. Если вы используете именованные мьютексы, вы можете гарантировать, что в любой момент времени запускается только одна операция. Подобно запуску 1 экземпляра настольного приложения, вы гарантируете, что все вызовы DoWork (), например, являются последовательными.

Это означает, что с помощью Интернета они не могли совершать повторные звонки. Но это зависит от того, как вы планируете использовать его в настольном приложении.

0 голосов
/ 09 февраля 2010

Как и другие решения, не очень безопасные, но вы можете проверить, работает ли цикл обработки сообщений, используя Application.MessageLoop , что обычно должно быть верно для приложений WinForms, но не для веб-приложений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...