When I DI 닌젝트 구현하십시오 사용하여, 나는 attaboy 오류 메시지가
& # 39, 유형의 컨트롤러거 만들려는 오류가 발생했습니다 TokenController& # 39;. 는 공공 구성자를 파라메트리스 컨트롤러거 있는지 확인합니다.
[assembly: OwinStartup(typeof(Web.Startup))]
namespace Web
{
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
ConfigureWebApi(app);
}
}
}
public class TokenController : ApiController
{
private IUserService _userService;
public TokenController(IUserService userService)
{
this._userService = userService;
}
[Route("api/Token")]
public HttpResponseMessage PostToken(UserViewModel model)
{
if (_userService.ValidateUser(model.Account, model.Password))
{
ClaimsIdentity identity = new ClaimsIdentity(Startup.OAuthBearerOptions.AuthenticationType);
identity.AddClaim(new Claim(ClaimTypes.Name, model.Account));
AuthenticationTicket ticket = new AuthenticationTicket(identity, new AuthenticationProperties());
var currentUtc = new SystemClock().UtcNow;
ticket.Properties.IssuedUtc = currentUtc;
ticket.Properties.ExpiresUtc = currentUtc.Add(TimeSpan.FromMinutes(30));
return new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new ObjectContent<object>(new
{
UserName = model.Account,
AccessToken = Startup.OAuthBearerOptions.AccessTokenFormat.Protect(ticket)
}, Configuration.Formatters.JsonFormatter)
};
}
return new HttpResponseMessage(HttpStatusCode.BadRequest);
}
}
난 '때 추가 키 추가 = " owin:AutomaticAppStartup" <;; 값 = " false"; 웹스콘피그 '을 />.
닌젝트 작동합니다,
디 컨테이너입니다 사용하는 방법을 통해 로빈?
이데펜덴시어솔버 구현하십시오 사용하여 다음과 같이 확인자 바바피 상관 관계
public void ConfigureWebApi(IAppBuilder app)
{
HttpConfiguration config = new HttpConfiguration();
config.DependencyResolver = new NinjectDependencyResolver(NinjectWebCommon.CreateKernel());
app.UseWebApi(config);
}
[닌젝트데펜덴시어솔버] (http://www.peterprovost.org/blog/2012/06/19/adding-ninject-to-web-api)
간단히 인젝터 사례
public void ConfigureWebApi(IAppBuilder app)
{
HttpConfiguration config = new HttpConfiguration();
var container = new Container();
container.Register<IUserService, UserService>();
config.DependencyResolver = new SimpleInjectorWebApiDependencyResolver(container);
app.UseWebApi(config);
}
[심프라인제스웨바피데펜덴시어솔버] (http://simpleinjector.codeplex.com/wikipage? title = Web% 20api% 20integration)
살펴보도록 할 수 있습니다 (이 블로그 포스트] (http://damienbod.wordpress.com/2013/10/01/self-host-webapi-with-owin-and-unity/).
그러나 최종 최대 it& # 39 의 힘을 사용하여 같은 것이 있다.
기본적으로 list. 바바피 종속성 해결. 이 모든 것이 제대로 매핑되었습니다 smartupdate 문제가 없어야 합니다.
만약 설정 후 디 너회가 아직 문제가 OAuth 토큰인지, 알려주세요.
건배
업데이트
이 덕분에 이제 더 간단하지는 누제 패키지 닌ject.웹스웨바피트로이뉴스트 :
Startup.cs
using Ninject;
using Ninject.Web.Common.OwinHost;
using Ninject.Web.WebApi.OwinHost;
using Owin;
using System.Web.Http;
namespace Xxx
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
var config = new HttpConfiguration();
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute("DefaultApi", "myservice/{controller}/{id}", new { id = RouteParameter.Optional });
app.UseNinjectMiddleware(CreateKernel);
app.UseNinjectWebApi(config);
}
}
public static IKernel CreateKernel()
{
var kernel = new StandardKernel();
kernel.Bind<IMyService>().To<MyService>();
return kernel;
}
}
이에 따라 내가 wiki 를 업데이트했는지.
https://github.com/ninject/Ninject.Web.Common/wiki/Setting-up-a-OWIN-WebApi-application
호스팅 모두 세 가지다.
https://github.com/ninject/Ninject.Web.WebApi/wiki/Setting-up-an-mvc-webapi-application
우리가 사용하는 표준 닌젝트. 설치된 누제 mvc5 패키지
PM>. 패키지 설치 닌젝트. MVC5
하나님은 우리의 바인딩 구성하시겠습니까 같은 합니다.
kernel.Bind<IDbContext, DbContext>()
.To<BlogContext>()
.InRequestScope();
kernel.Bind<IUserStore<User>>()
.To<UserStore<User>>()
.InRequestScope();
kernel.Bind<IDataProtectionProvider>()
.To<DpapiDataProtectionProvider>()
.InRequestScope()
.WithConstructorArgument("ApplicationName");
kernel.Bind<ApplicationUserManager>().ToSelf().InRequestScope()
.WithPropertyValue("UserTokenProvider",
new DataProtectorTokenProvider<User>(
kernel.Get<IDataProtectionProvider>().Create("EmailConfirmation")
));
사용자 모델 정의한 알마예요 종속적임 조정해야 할 수 있습니다. 예를 들어 사용자가 바인딩하면 같은 항목을 저장할 수 있습니다.
kernel.Bind<IUserStore<User, int>>()
.To<IntUserStore>().InRequestScope();
즉, 또한 모든 사용자 설정 관리자 암호를 사용자 관리자 구성자를 필요한 정책을 설정할 수 있습니다.
이전에는 이 만들 수 있는 방법을 찾을 수 있는 이 샘플링합니다 않아도 됩니다. 또한 없앨 수 있습니다) 로 처리할 수 있는 로빈 프레젠테이션이든 컨텍스트로 페이징됩니다 닌젝트 해결안에서는 당신꺼에요.