C# 如何使用Unity在ASP.NET Web API 2控制器中使用依赖项注入?
在Visual Studio 2019中,我创建了一个ASP.NET Web API项目。我创建了一个WebAPI2控制器。我遵循这一点,并使用Unity实现依赖注入 我已经根据链接1共享了代码,但它不起作用。我在C# 如何使用Unity在ASP.NET Web API 2控制器中使用依赖项注入?,c#,asp.net-web-api,dependency-injection,unity-container,.net-framework-version,C#,Asp.net Web Api,Dependency Injection,Unity Container,.net Framework Version,在Visual Studio 2019中,我创建了一个ASP.NET Web API项目。我创建了一个WebAPI2控制器。我遵循这一点,并使用Unity实现依赖注入 我已经根据链接1共享了代码,但它不起作用。我在UnityResolver的方法GetService(Type serviceType)中得到一个错误(我从第一个链接复制了该方法) 错误是: 引发异常:Unity.Container.dll中的“Unity.ResolutionFailedException” 我使用断点检查了这个问
UnityResolver
的方法GetService(Type serviceType)
中得到一个错误(我从第一个链接复制了该方法)
错误是:
引发异常:Unity.Container.dll中的“Unity.ResolutionFailedException”
我使用断点检查了这个问题。尽管容器不是null,但它返回null
我已经找了这么久了。我不明白哪里错了,或者我做错了什么
我对.NET框架和编程都是新手。感谢您的帮助或建议
public object GetService(Type serviceType)
{
try
{
return container.Resolve<Type>();
//return container.Resolve(serviceType);
}
catch (ResolutionFailedException)
{
return null;
}
}
WebApiConfig.cs
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
var container = new UnityContainer();
container.RegisterType<IAgent, Agent>();
config.DependencyResolver = new UnityResolver(container);
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
我也有同样的问题。有人知道怎么了吗?我也有同样的问题。有人知道怎么了吗?
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
var container = new UnityContainer();
container.RegisterType<IAgent, Agent>();
config.DependencyResolver = new UnityResolver(container);
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}