यह एक वेब एपीआई 2 प्रोजेक्ट है।ओ कंटेनर का उपयोग कैसे करें जब OwinStartup
जब मैं Ninject का उपयोग कर डि लागू, मैंने एक त्रुटि संदेश
जब प्रकार का एक नियंत्रक 'TokenController' बनाने का प्रयास करते समय कोई त्रुटि उत्पन्न हो गया। सुनिश्चित करें कि नियंत्रक के पास पैरामीटर रहित सार्वजनिक कन्स्ट्रक्टर है।
[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.config को
Ninject काम करता है ठीक, लेकिन Startup.OAuthBearerOptions.AccessTokenFormat शून्य पर
कैसे Owin साथ डि कंटेनर का उपयोग करना हो जाता है?
अद्यतन
IDependencyResolver कार्यान्वित करके
public void ConfigureWebApi(IAppBuilder app)
{
HttpConfiguration config = new HttpConfiguration();
config.DependencyResolver = new NinjectDependencyResolver(NinjectWebCommon.CreateKernel());
app.UseWebApi(config);
}
नीचे के रूप में वेबएपीआई निर्भरता रिज़ॉल्वर का उपयोग सरल इंजेक्टर मामले में
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
वहाँ एक कारण है कि आप अपने नियंत्रक को एक खाली निर्माता नहीं जोड़ सकते है? –
@ निकोलई सैमटेलैज मैं खाली कन्स्ट्रक्टर में निर्भरता लागू कर चुका हूं, मैं सिर्फ यह जानना चाहता हूं कि इस मामले में डी कंटेनर का उपयोग कैसे करें –
[एक प्रोजेक्ट है] (https://github.com/DotNetDoodle/DotNetDoodle.Owin.Dependencies) जो इस समर्थन को प्रदान करता है, लेकिन शायद आपको अपने आप को निचोड़ने के लिए एडाप्टर लिखना होगा क्योंकि यह केवल ऑटोफैक के लिए बॉक्स कार्यान्वयन से बाहर प्रदान करता है। –