Я разрабатываю модуль для Orchard, который будет ограничивать элементы в папке Media, просматривая аутентифицированные разрешения пользователя.Как внедрить службы в пользовательский IHttpHandler в Orchard
Первая вещь редактирования web.config в папке СМИ, как это:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appSettings>
<add key="webpages:Enabled" value="false" />
</appSettings>
<system.web>
<httpHandlers>
<add path="*" verb="*" type="MediaFileAccess.AuthorizedMediaHandler" />
</httpHandlers>
</system.web>
<system.webServer>
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" />
</staticContent>
<handlers accessPolicy="Script,Read">
<add name="AuthorizedFile" path="*" verb="*"
type="MediaFileAccess.AuthorizedMediaHandler,MediaFileAccess"
preCondition="integratedMode" />
</handlers>
</system.webServer>
</configuration>
Обработчик, который зарегистрирован в web.config:
public class AuthorizedMediaHandler : IHttpHandler, IDependency
{
private readonly IAuthenticationService _authenticationService;
public AuthorizedMediaHandler(IAuthenticationService authenticationService)
{
_authenticationService = authenticationService;
}
public bool IsReusable { get { return false; } }
public void ProcessRequest(HttpContext context)
{
// Do something using the injected services...
}
}
Когда я перейти к Средство URL-адреса элемента контента выбрасывает MissingMethodException. Это нормально, потому что система не может найти конструктор без параметров.
Итак, как я могу вставлять сервисы Orchard в IHttpHandler?
Я не нашел спасительный код Orchard в Glympse, он не потребляет услуги Orchard, как я вижу :( –
yeap, позвольте мне получить вам еще один ответ ... – ErMasca