1
Error activating IntPtr

ASP.NET MVC 4 アプリケーションで、Ninject (v.3) を使用して FluentSecurity (v.1.4) を構成しようとしています。

ResolveServicesUsing()上記のエラーをスローせずに構成式を設定することはできません。

SecurityConfigurator.Configure(
    configuration =>
        {
            configuration.ResolveServicesUsing(
                DependencyResolver.Current.GetServices, 
                DependencyResolver.Current.GetService);
...

また、別のオーバーロードを使用してみましたResolveServicesUsing()

configuration.ResolveServicesUsing(
    type => DependencyResolver.Current.GetServices(type));

FluentSecurity は、Ninject で構成して、ユーザーのロールを検索するためのメソッドと、PolicyViolationHandler 実装のためのメソッドを挿入する必要があります。

アップデート

問題のある行を省略しても、GetRolesFrom() の実装を呼び出すことができることがわかりました (フラー):

configuration.GetRolesFrom(
    () =>
    ((IPersonManager)DependencyResolver
    .Current
    .GetService(typeof(IPersonManager)))
    .GetCurrentUserRoles());

ただし、まだ PolicyViolationHandler を機能させることはできません。

public class RequireRolePolicyViolationHandler : IPolicyViolationHandler
{
    public ActionResult Handle(PolicyViolationException exception)
    {
        return new RedirectToRouteResult(
            new RouteValueDictionary(
                new
                    {
                        action = "AccessDenied", 
                        controller = "Home"
                    }));
    }
}

私は次のようにNinjectModuleでバインディングを行っています:

public class SecurityModule : NinjectModule
{
    public override void Load()
    {
        this.Kernel.Bind<IPolicyViolationHandler>()
                   .To<RequireRolePolicyViolationHandler>();
    }
}
4

2 に答える 2

1

IntPtr のアクティブ化エラー

残念ながら、完全な StackTrace を投稿していません。Funcただし、通常、バインディングを持たない、または Factory 拡張機能を使用せずにクラスにa を注入すると、この例外が発生します。

于 2013-09-17T08:47:08.887 に答える