Nach dem Rat, den ich in diesem Thread gegeben habe [Ninject UOW pattern, new ConnectionString after user is authenticated] verstehe ich jetzt, dass ich nicht die folgende Zeile verwenden sollte ...Wie benutze ich NICHT DependencyResolver.Current.GetService (...) in dieser Situation/
var applicationConfiguration =
(IApplicationConfiguration)
DependencyResolver.Current.GetService(typeof(IApplicationConfiguration));
... als Service Locator ist ein Anti-Pattern.
Aber im Fall des folgenden Verfahrens, wie kann ich mein konkretes Objekt instanziiert, die „IApplicationConfiguration“, so dass ich das Objekt verwenden kann implementiert die unbekannten Benutzerrollennamen zu bekommen, oder es verwenden, um die "zuweisen ApplicationConfiguration "Eigenschaft meines Prinzips?
Global.asax
public class MvcApplication : NinjectHttpApplication
{
/// <summary>
/// Handles the PostAuthenticateRequest event of the Application control.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
protected void Application_PostAuthenticateRequest(Object sender, EventArgs e)
{
String[] roles;
var applicationConfiguration =
(IApplicationConfiguration)
DependencyResolver.Current.GetService(typeof(IApplicationConfiguration));
var identity = HttpContext.Current.User.Identity;
if (Request.IsAuthenticated)
{
roles = Roles.GetRolesForUser(identity.Name);
}
else
{
roles = new[] { applicationConfiguration.UnknownUserRoleName };
}
var webIdentity = new WebIdentity(identity, roles);
var principal = new WebsitePrincipal(webIdentity)
{
ApplicationConfiguration = applicationConfiguration
};
HttpContext.Current.User = principal;
}
.
.
.
}
Resolution Mapping-Code
public class ApplicationConfigurationContractMapping : NinjectModule
{
public override void Load()
{
Bind<IApplicationConfiguration>()
.To<ApplicationConfiguration>();
}
}
ApplicationConfiguration
public class ApplicationConfiguration : IApplicationConfiguration
{
.
.
.
.
}
Ich benutze Ninject als mein Dependency Injection Framework. Irgendwelche Vorschläge geschätzt.
EDIT: Voll Code hier zu sehen ist: https://github.com/dibley1973/Dibware.Template.Presentation.Web
Oooh, die ziemlich süß aussieht, danke. Ich werde das geben und Feedback geben. – Dib
Das funktioniert ein Leckerbissen und sieht nett und ordentlich aus. Vielen Dank – Dib