Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将服务注入Orchard中的自定义IHttpHandler_C#_Asp.net_Orchardcms_Autofac_Ihttphandler - Fatal编程技术网

C# 如何将服务注入Orchard中的自定义IHttpHandler

C# 如何将服务注入Orchard中的自定义IHttpHandler,c#,asp.net,orchardcms,autofac,ihttphandler,C#,Asp.net,Orchardcms,Autofac,Ihttphandler,我正在为Orchard开发一个模块,该模块将通过查找经过身份验证的用户权限来限制媒体文件夹中的项目 第一件事是在媒体文件夹中编辑web.config,如下所示: 在web.config中注册的处理程序: public类AuthorizedMediaHandler:IHttpHandler,IDependency { 私有只读IAAuthenticationService\u authenticationService; 公共授权的MediaHandler(IAAuthenticationSe

我正在为Orchard开发一个模块,该模块将通过查找经过身份验证的用户权限来限制媒体文件夹中的项目

第一件事是在媒体文件夹中编辑web.config,如下所示:


在web.config中注册的处理程序:

public类AuthorizedMediaHandler:IHttpHandler,IDependency
{
私有只读IAAuthenticationService\u authenticationService;
公共授权的MediaHandler(IAAuthenticationService authenticationService)
{
_authenticationService=authenticationService;
}
公共布尔可重用{get{return false;}}
公共void ProcessRequest(HttpContext上下文)
{
//使用注入的服务做一些事情。。。
}
}
当我导航到媒体项url时,系统抛出MissingMethodException。这是正常的,因为系统找不到无参数构造函数


那么,如何将Orchard服务注入IHttpHandler?

您签出Glympse了吗?使用HttpHandlers,有一个问题

有一次讨论让我思考


让您的web.configs正常工作,它应该是正常的。我不知道
IDependency
位,可能不需要它。

您签出Glympse了吗?使用HttpHandlers,有一个问题

有一次讨论让我思考


让您的web.configs正常工作,它应该是正常的。我不知道
IDependency
位,可能不需要它。

您签出Glympse了吗?使用HttpHandlers,有一个问题

有一次讨论让我思考


让您的web.configs正常工作,它应该是正常的。我不知道
IDependency
位,可能不需要它。

您签出Glympse了吗?使用HttpHandlers,有一个问题

有一次讨论让我思考


让您的web.configs正常工作,它应该是正常的。我不知道
IDependency
位,可能不需要它。

您肯定无法注入。对不起,我刚才的回答遗漏了这一点

您可以创建一个Orchard模块,该模块添加一个过滤器,或使用一个控制器劫持您指定的路由,并从实际安全的地方为文件提供服务

乌节接管了IIS。这就是为什么您需要在文件夹的web.config中添加staticfilemodule,以允许IIS进入,这就是它不安全的原因


如果你真的需要走这条路,也许可以打一个非常快速的服务电话到乌节或直接与db通话

您肯定无法注射。对不起,我刚才的回答遗漏了这一点

您可以创建一个Orchard模块,该模块添加一个过滤器,或使用一个控制器劫持您指定的路由,并从实际安全的地方为文件提供服务

乌节接管了IIS。这就是为什么您需要在文件夹的web.config中添加staticfilemodule,以允许IIS进入,这就是它不安全的原因


如果你真的需要走这条路,也许可以打一个非常快速的服务电话到乌节或直接与db通话

您肯定无法注射。对不起,我刚才的回答遗漏了这一点

您可以创建一个Orchard模块,该模块添加一个过滤器,或使用一个控制器劫持您指定的路由,并从实际安全的地方为文件提供服务

乌节接管了IIS。这就是为什么您需要在文件夹的web.config中添加staticfilemodule,以允许IIS进入,这就是它不安全的原因


如果你真的需要走这条路,也许可以打一个非常快速的服务电话到乌节或直接与db通话

您肯定无法注射。对不起,我刚才的回答遗漏了这一点

您可以创建一个Orchard模块,该模块添加一个过滤器,或使用一个控制器劫持您指定的路由,并从实际安全的地方为文件提供服务

乌节接管了IIS。这就是为什么您需要在文件夹的web.config中添加staticfilemodule,以允许IIS进入,这就是它不安全的原因


如果你真的需要走这条路,也许可以打一个非常快速的服务电话到乌节或直接与db通话

虽然您不能像这样注入依赖项,但仍然可以使用
IShim
的魔力访问Orchard的DI容器。查看例如,
OrchardLog4netLogger
如何从
iorchardhostcainer
解析依赖项

请记住,此容器是应用程序范围的容器:为了能够解析标准的
IDependency
类型,您需要首先从
IOrchardHost
获取
ShellContext
,然后从其
LifetimeScope
作为
LifetimeScope.CreateWorkContextScope()
创建一个
WorkContextScope


我知道这看起来很复杂,而且确实涉及到很多方面。但底线是,通过这种方式,您可以在任何类中解析来自Orchard(及其shells)DI容器的服务。

虽然您无法像这样注入依赖项,但您仍然可以使用
IShim
的魔力访问Orchard的DI容器。查看例如,
OrchardLog4netLogger
如何从
iorchardhostcainer
解析依赖项

请记住,此容器是应用程序范围的容器:为了能够解析标准的
IDependency
类型,您需要首先从
IOrchardHost
获取
ShellContext
,然后从其
LifetimeScope
作为
LifetimeScope.CreateWorkContextScope()
创建一个
WorkContextScope


我知道这看起来很复杂,而且确实涉及到很多方面。但底线是,通过这种方式,您可以在任何类中解析来自Orchard(及其shells)DI容器的服务。

,而您将无法