2010-01-18 8 views
0

Я хочу знать, возможно ли это по существу:Как вы подавляете прямой вызов управляемого метода?

Подумайте о облачном сценарии. Я разрешаю пользователям загружать свой .net-код на мой сервер. Однако, чтобы управлять вещами на моем сервере, я не могу позволить пользователям писать код, который делает прямые вызовы таким методам, как HttpWebRequest.Create().

Если пользователь написал такой код, это означает, что он пытается связаться с другой веб-службой (например,). Моя цель состоит в том, чтобы эти сервисы обслуживались с помощью другого сервера, но все же основной сервер работал с другими входящими запросами.

Я хочу заблокировать вызовы HttpWebRequest.Create(). Вместо этого я предоставлю некоторый интерфейс для того, чтобы пользователь мог совершать такие вызовы. Какое решение я могу придумать для этой проблемы?

PS: Я больше .net 2.0 ориентирован. Пожалуйста, быть конкретными, если вы ответите сделки с более высокой версии

ответ

1

взглянуть на код доступа безопасности (http://msdn.microsoft.com/en-us/library/930b76w0(VS.71).aspx или http://www.codeproject.com/KB/security/UB_CAS_NET.aspx)

Вы можете создать новую ограниченную AppDomain, где выполняется код клиентов.

EDIT: Если вы хотите предоставить API-интерфейс, который реализует методы, требующие HttpWebRequest, то я бы предложил создать сервис (который имеет все права), и ваш API вызывает эту службу. В этой службе вы можете реализовать любые ограничения, которые вы хотите.

+0

Что делать, если я обнаружил интерфейс, который имел вызов HttpWebRequest.Create()? Я бы хотел, чтобы это выполнялось ... – deostroll