无法使用KeyFilter属性解析asp.net核心web api 2.2中的注册类型
我想使用Autofac来解析一个类型的不同实例。我使用RegisterType().Keyed和RegisterType().Named在Startup.ConfigureServices中注册了类型。
我可以使用IContainer.ResolveKeyed来解析实例,但不能在构造函数中使用KeyFilter来解析实例
启动
public class Startup
{
public Startup(IConfiguration configuration)
我有一个简单的MVC应用程序,我试图在其中添加一个异常过滤器。为了做到这一点,我遵循了我认为适用于Autofac.WebApi2 NuGet包的NuGet。
首先,我创建了异常筛选器。
public class ErrorLoggingExceptionFilter : IAutofacExceptionFilter
{
public void OnException(HttpActionExecutedContext context)
{
// do something
}
}
然后,将AutofacControllerConfiguration属性
向控制台API发送post请求时,出现以下异常:
Autofac.Core.DependencyResolutionException
HResult=0x80131500
Message=An exception was thrown while activating TeocoExcel.DataManager.
Source=Autofac
StackTrace:
at Autofac.Core.Resolving.InstanceLookup.Activate(IEnumerable`1 parameters, Ob
让我们假设这个场景:
public class B {};
public class C
{
public C(B b){}
}
为了从Autofac容器中解析C,我必须将B和C都注册到容器。但是,今天我使用了,似乎我只需要将B注册到容器中,然后C就可以解析了。
所以Autofac不能像Unity那样做?
请注意,我使用的是Autofac,但是当我运行API并使用这个URL与检查时,:
我得到了这个错误:
{
"message": "An error has occurred.",
"exceptionMessage": "An error occurred when trying to create a controller of type 'CalculationsController'. Make sure that the controller has a parameterless public
下面的类在构造函数上使用一个原语,因此我需要告诉AutoFac如何使用委托生成上述值:
public class BackgroundTaskScheduler : IStartable
{
private readonly IJobRunner _jobRunner;
private int _triggerMilliseconds;
public BackgroundTaskScheduler(IJobRunner jobRunner, int triggerMilliseconds)
{
_jobRunner = jobRunner;
虽然我通常觉得Autofac文档(在wiki上)很有帮助,但关于XML配置和模块的部分对我来说有点不清楚。现在,我有一个样例在工作(我在下面展示),但我不确定它是否代表了一种在Autofac上下文中进行配置的混蛋方法。特别是,我不确定我在配置文件和代码文件中是否有更多或更少我真正需要的东西。
代码如下:
using System;
using System.IO;
using Autofac;
using Autofac.Configuration;
namespace AutofacTest.Animals
{
interface IAnimal
{
voi
我是Autofac的新手,不能理解注册的语法。我有以下类/接口:
//Interface
public interface ISender
{
void Send();
}
//implementations
public class Post : ISender
{
public void Send()
{
//Post implementation
}
}
public class Email : ISender
{
public void Send()
{
//Email implementation
我试图将Autofac配置为使用我的Web /Oauth项目,但它似乎不起作用。我一直得到“构造函数上的不能解析参数ApplicationUserManager .”
这是没有实例化的服务:
public class EmployeeService : Service<Employee>, IEmployeeService
{
private readonly ApplicationUserManager _userManager;
public EmployeeService(IUnitOfWork uow, ApplicationUserManager use
我们为我们的项目调查DI容器。现在我们在Autofac和Castle Windsor之间选择。有一件事对我们来说非常重要: Autofac的强类型注册。
示例:
public interface ITestAutofac
{
}
public class NotDerivedFrom
{
}
对于温莎,我可以写这样的东西-
var cont = new WindsorContainer();
cont.Register(Component
.For<ITestAutofac>().ImplementedBy<NotDerivedFr
我在我的web应用程序中使用SolrNet和Autofac DI,如下所示:
var solrNetModule = new SolrNetModule(ConfigurationManager.ConnectionStrings["solr"].ConnectionString);
solrNetModule.HttpWebRequestFactory = new BasicAuthHttpWebRequestFactory("****", "****");
builder.RegisterModule(solrNetModule);
我的查询
如果我有以下类,是否可以将复制构造函数排除在Autofac注册之外?
public class A
{
public A() {}
public A(A other) { // copy constructor }
public A(int b) { // some other stuff }
}
基本上,我希望autofac解析默认构造函数,或者如果用户请求Func<int, A>,则使用第三个构造函数。我不希望autofac解析复制构造函数。这个是可能的吗?
原因是,当我尝试使用Autofac注入Func<A>时,它会产生循环依赖,因为Aut