SORU
5 Kasım 2013, Salı


Nasıl OwinStartup zaman Dİ konteyner kullanmak için

Web API 2 bir proje.

Ben Dİ Ninject kullanarak uygulamak, bir hata iletisi aldım

Bir hata türü bir denetleyicisi oluşturmak için çalışıyorum oluştu ''. TokenController Denetleyici parametresiz bir genel oluşturucuya sahip olduğundan emin olun.

[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);
    }
}

<add key="owin:AutomaticAppStartup" value="false" /> web eklediğimde.config

Ninject iyi çalışıyor amaBaşlangıç.OAuthBearerOptions.AccessTokenFormatnull olur

Nasıl OWİN ile Dİ konteyner kullanmak için?

GÜNCELLEME

İDependencyResolver uygulamak ve WebAPİ Bağımlılık Çözümleyici olarak kullanınız

public void ConfigureWebApi(IAppBuilder app)
{
    HttpConfiguration config = new HttpConfiguration();

    config.DependencyResolver = new NinjectDependencyResolver(NinjectWebCommon.CreateKernel());

    app.UseWebApi(config);
}

NinjectDependencyResolver


Basit bir Enjektör durumda

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);
}

SimpleInjectorWebApiDependencyResolver

CEVAP
5 Aralık 2013, PERŞEMBE


this blog post bakmak isteyebilirsiniz.

Birlik kullanıyor ama sonunda aynı olması gerekir.

Temelde, WebAPİ Bağımlılık Çözümleyici kullanın. Her şeyi doğru eşleştirilir ve iyi olmalıdır emin olun.

Eğer Dİ senin kurduktan sonra hala OAuth token ile sorun varsa, bana bildirin.

Şerefe

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CNET

    CNET

    5 Mayıs 2006
  • Sean Murphy

    Sean Murphy

    4 ŞUBAT 2009
  • TheFlightsuit

    TheFlightsui

    22 HAZİRAN 2009