asp.net-mvc – 尝试创建类型为’TypeNewsController’的控制器时出错
发布时间:2020-12-05 05:47:58 所属栏目:asp.Net 来源:互联网
导读:我已经搜索了很长时间,但没有发现任何帮助.我哪里错了?我真的不知道该怎么办我写下了所有的细节.我试过,没有成功. An error occurred when trying to create a controller of type ‘TypeNewsController’. Make sure that the controller has a parameterle
|
我已经搜索了很长时间,但没有发现任何帮助.我哪里错了?我真的不知道该怎么办我写下了所有的细节.我试过,没有成功.
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
WebApiConfig.Register(GlobalConfiguration.Configuration);
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
Bootstrapper.Run();
}
}
我的apicontroller: public class TypeNewsController : ApiController
{
private readonly ITypeNewsService _typeNewsService;
public TypeNewsController(ITypeNewsService typeNewsService)
{
_typeNewsService = typeNewsService;
}
[HttpGet]
public TypeNewsResponse Get([ModelBinder] PageRequest model)
{
model = model ?? new PageRequest();
var output = _typeNewsService.GetTypeNewss().ToList();
return new TypeNewsResponse
{
Page = model.PageIndex,Records = model.PageSize,Rows = output.ToList(),Total = output.Count() / model.PageSize,};
}
}
错误: <Error> <Message>An error has occurred.</Message> <ExceptionMessage> An error occurred when trying to create a controller of type 'TypeNewsController'. Make sure that the controller has a parameterless public constructor. </ExceptionMessage> <ExceptionType>System.InvalidOperationException</ExceptionType> <StackTrace> at System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create(HttpRequestMessage request,HttpControllerDescriptor controllerDescriptor,Type controllerType) at System.Web.Http.Controllers.HttpControllerDescriptor.CreateController(HttpRequestMessage request) at System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsyncCore(HttpRequestMessage request,CancellationToken cancellationToken) at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__0.MoveNext() </StackTrace> <InnerException> <Message>An error has occurred.</Message> <ExceptionMessage> Type 'JuventusNewsSiteApk.Controllers.TypeNewsController' does not have a default constructor </ExceptionMessage> <ExceptionType>System.ArgumentException</ExceptionType> <StackTrace> at System.Linq.Expressions.Expression.New(Type type) at System.Web.Http.Internal.TypeActivator.Create[TBase](Type instanceType) at System.Web.Http.Dispatcher.DefaultHttpControllerActivator.GetInstanceOrActivator(HttpRequestMessage request,Type controllerType,Func`1& activator) at System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create(HttpRequestMessage request,Type controllerType) </StackTrace> </InnerException> </Error> Bootstrapper类: public static class Bootstrapper
{
public static void Run()
{
SetAutofacContainer();
//Configure AutoMapper
AutoMapperConfiguration.Configure();
}
private static void SetAutofacContainer()
{
var builder = new ContainerBuilder();
builder.RegisterControllers(Assembly.GetExecutingAssembly());
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
builder.RegisterType<UnitOfWork>().As<IUnitOfWork>().InstancePerRequest();
builder.RegisterType<DatabaseFactory>().As<IDatabaseFactory>().InstancePerRequest();
builder.RegisterAssemblyTypes(typeof(NewsRepository).Assembly)
.Where(t => t.Name.EndsWith("Repository"))
.AsImplementedInterfaces().InstancePerRequest();
builder.RegisterAssemblyTypes(typeof(NewsService).Assembly)
.Where(t => t.Name.EndsWith("Service"))
.AsImplementedInterfaces().InstancePerRequest();
builder.RegisterAssemblyTypes(typeof(DefaultFormsAuthentication).Assembly)
.Where(t => t.Name.EndsWith("Authentication"))
.AsImplementedInterfaces().InstancePerRequest();
builder.Register(
c => new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new JuventusNewsApkEntities())))
.As<UserManager<ApplicationUser>>().InstancePerRequest();
builder.RegisterFilterProvider();
IContainer container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
}
}
更新: public class TypeNewsService : ITypeNewsService
{
private readonly ITypeNewsRepository _typeNewsRepository;
private readonly IUnitOfWork _unitOfWork;
public TypeNewsService(ITypeNewsRepository typeNewsRepository,IUnitOfWork unitOfWork)
{
_typeNewsRepository = typeNewsRepository;
_unitOfWork = unitOfWork;
}
#region ITypeNewsService Member
public void AddTypeNews(TypeNews typeNews)
{
_typeNewsRepository.Add(typeNews);
SaveTypeNews();
}
public void DeleteTypeNews(int id)
{
_typeNewsRepository.DeleteById(id);
SaveTypeNews();
}
public IEnumerable<TypeNews> GetTypeNewss()
{
var output = _typeNewsRepository.GetAll();
return output;
}
public void SaveTypeNews()
{
_unitOfWork.Commit();
}
#endregion
}
public interface ITypeNewsService
{
void AddTypeNews(TypeNews typeNews);
void DeleteTypeNews(int id);
IEnumerable<TypeNews> GetTypeNewss();
void SaveTypeNews();
}
解决方法您的控制器是WebApi控制器,Autofac的注册与MVC注册不同. WebApi不使用DependencyResolver,因此您需要告诉WebApi专门使用Autofac解析器.您需要将其添加到您的SetAutofacContainer代码中: // Create the depenedency resolver. var resolver = new AutofacWebApiDependencyResolver(container); // Configure Web API with the dependency resolver. GlobalConfiguration.Configuration.DependencyResolver = resolver; 有关更多信息,请参阅https://code.google.com/p/autofac/wiki/WebApiIntegration. (编辑:十堰站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Asp.Net MVC路由表和控制器操作
- 在ASP.NET中,获取基本UR1请求的最快方法是什么?
- ASP.NET 程序中删除文件夹导致session失效问题的解决办法分
- asp.net-web-api – 首先使用ASP.NET Web API的EF5代码:更
- ASP.NET清空缓存时遇到的问题简析
- asp.net fileupload控件上传文件与多文件上传
- asp.net – 我如何使用AJAX来确定用户的会话是否已过期,然后
- asp.net – 如何检查SQL Server代理是否正在运行
- asp.net-mvc – 在asp.net mvc 3剃刀中识别html助手的问题
- IIS ASP.NET WebApi在请求同一台服务器时死锁
推荐文章
站长推荐
- ASP.NET JSON字符串与实体类的互转换示例代码
- asp.net-mvc – 如何使用ASP.NET MVC ApiControl
- asp.net – axd和ashx处理程序之间的区别
- asp.net – UserControl Viewstate在回发后丢失所
- asp.net-mvc-4 – 表单身份验证:角色(MVC 4)C#
- asp.net-mvc – 如何在视图上下文之外获取ModelM
- asp.net – Request.Url.AbsoluteUri和重写的URL
- ASP.NET:隐藏gridview中的列
- asp.net – 渗透测试人员说.ASPXAUTH cookie是不
- asp.net-mvc – 当我不知道内容类型时如何返回文
热点阅读
