小编Joy*_*Joy的帖子

使用SimpleInjector为AccountController注册Identity Framework UserStore

我有一种情况,我想使用Identity框架中的自定义UserStore.所以我的控制器看起来像这样.

public AccountController()
: this(new UserManager<ApplicationUser>(new MyUserStore()))
{
}
public AccountController(UserManager<ApplicationUser> userManager)
{
      UserManager = userManager;
}
Run Code Online (Sandbox Code Playgroud)

现在Simpleinjector不允许多个构造函数.它可以允许用一个构造函数注册这些类.当情况与上述情况类似时,我该如何解决这个问题.使用Simpleinjector注册.

asp.net-mvc dependency-injection simple-injector asp.net-mvc-4 asp.net-identity

4
推荐指数
1
解决办法
2846
查看次数

"MVC过滤器提供程序已经注册了另一个Container实例." 在Simple Injector 2.6中

我以前在我的一个属性中设置了属性注入设置

 Container.RegisterInitializer<PermitAttribute>(initialize =>
 {
     initialize.QueryProcessor = Container.GetInstance<IQueryProcessor>();
 });
Run Code Online (Sandbox Code Playgroud)

用法是

public class PermitAttribute : ActionFilterAttribute
{       
    public IQueryProcessor QueryProcessor { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

但在更新到simpleinjector之后2.6.1属性注入破了.当我试图访问QueryProcessorPermitAttribute内的对象时.它解析了null值,因为Simple Injector配置仍然通过委托实例注入相同的属性.

由于它在v2.5中工作并且在2.6.1中不再起作用,属性注入行为是否有任何重大变化?

更新1:

配置中的Line为MVC过滤器提供程序注册v2.6.1中的属性引发了错误

 container.RegisterMvcIntegratedFilterProvider();
Run Code Online (Sandbox Code Playgroud)

为此我评论了它.它阻止了房产注入工作.属性注入是我的一个属性.我猜这就是影响它的线.它在v2.6.1中抛出错误

更新2:

信息

已为另一个Container实例注册了MVC筛选器提供程序.此方法不支持为不同容器注册MVC筛选器提供程序.

堆栈跟踪 :

at SimpleInjector.SimpleInjectorMvcExtensions.RequiresFilterProviderNotRegistered(Container container)
at SimpleInjector.SimpleInjectorMvcExtensions.RegisterMvcIntegratedFilterProvider(Container container)
at RemsPortal.App_Start.SimpleInjectorInitializer.Initialize() in d:\Projects Work\RemsPortal\V2.0 Web Portal\RemsPortal\App_Start\SimpleInjectorInitializer.cs:line 39
Run Code Online (Sandbox Code Playgroud)

更新3:

整个配置

public static void Initialize()
{
    var container = new Container();

    InitializeContainer(container);
    container.RegisterMvcIntegratedFilterProvider();
    container.RegisterMvcControllers(Assembly.GetExecutingAssembly());

    container.Verify();

    DependencyResolver.SetResolver(new SimpleInjectorDependencyResolver(container));
}

private static void InitializeContainer(Container Container)
{
    Container.RegisterManyForOpenGeneric(typeof(IAsyncCommandHandler<,>),
        AppDomain.CurrentDomain.GetAssemblies());
    Container.RegisterOpenGeneric(typeof(ITransactionCommandHandler<,>),
        typeof(TransactionCommandHandlerDecorator<,>)); …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc dependency-injection simple-injector

4
推荐指数
1
解决办法
1246
查看次数

从列表条件中删除某些元素基于另一个列表

我在这里遇到了一个基本的问题.虽然这可以通过重复循环来解决.我想知道如何在linq中完成.

我有两个清单.

List<string> a  = new List<string>{"a","b","c","d","e","f"};
List<string> b = new List<string> { "a", "b", "c", "x", "y", "z" };
Run Code Online (Sandbox Code Playgroud)

我想比较列表a和b中找到的b中的哪个元素.我想从b中删除该元素.换句话说,我想根据列表a的比较从b中删除{"a","b","c"},并且只想在列表b中包含{"x","y","z"}.是否有单一声明linq来解决这个问题?

linq list

3
推荐指数
1
解决办法
2303
查看次数

ocLazyload没有加载模块

在HTML中我在app.js之前加载oclazyload -

<!-- inject:js -->
        <script src="/packages/libs/jquery/dist/jquery.js"></script>
        <script src="/packages/libs/angular/angular.js"></script>
        <script src="/packages/libs/oclazyload/dist/ocLazyLoad.js"></script>
        <script src="/packages/libs/angular-ui-router/release/angular-ui-router.js"></script>
        <!-- endinject -->

        <script src="app/app.js" ></script>
        <script src="app/common/app.config.js" charset="utf-8"></script>
Run Code Online (Sandbox Code Playgroud)

我的app.js -

(function () {
    angular.module('app', ['ui.router', 'oc.lazyload']);

    angular.element(document).ready(function () {
        angular.bootstrap(document, ["app"]);
    });
})();
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,它根本不加载oc.lazyload模块.可能是什么问题?我错过了什么吗?

Uncaught Error: [$injector:modulerr] Failed to instantiate module app due to:
Error: [$injector:modulerr] Failed to instantiate module oc.lazyload due to:
Error: [$injector:nomod] Module 'oc.lazyload' is not available! You either misspelled the module name or forgot to load it. If registering a …
Run Code Online (Sandbox Code Playgroud)

angularjs oclazyload

3
推荐指数
1
解决办法
4867
查看次数

data-ajax-update 和 data-ajax-mode="replace" 在 dotnet core jquery unobtrusive ajax 中不起作用

我有一个锚点,它应该用局部视图替换网格。

<a class="btn btn-primary" 
                        data-ajax="true" 
                        data-ajax-method="GET"
                        data-ajax-mode="replace"
                        data-ajax-update="content"
                        data-ajax-url="@Url.Action("add","user")"> Create User </a>
 <div class="row table-area">
    <div class="col-md-12" id="content">
        @Html.AjaxGrid(Url.Action("results", "user"))
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我看到它使用部分视图调用用户操作,但它从不使用id="content".

这是我的控制器方法 -

    [Route("add")]
    public IActionResult AddUser()
    {
        return PartialView("Partials/AddUser",new RegisterViewModel());
    }
Run Code Online (Sandbox Code Playgroud)

理想情况下,它应该用部分视图完全替换网格内容,但它不会替换 . 响应状态为 200,我可以看到内容正在响应中返回。有人知道这里有什么问题吗?

unobtrusive-ajax asp.net-core-mvc .net-core asp.net-core

3
推荐指数
1
解决办法
1万
查看次数

rfc7231#section-6.5.1 有关 Kubernetes 上 dotnet core 入口控制器 api 访问的问题

我已将一个简单的 dotnet core 应用程序部署到 Kubernetes 中。暴露的服务如下

apiVersion: v1
kind: Service
metadata:
  creationTimestamp: "2020-01-17T18:07:23Z"
  labels:
    app.kubernetes.io/instance: expo-api
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: expo-api
    app.kubernetes.io/version: 0.0.4
    helm.sh/chart: expo-api-0.0.4
  name: expo-api-service
  namespace: default
  resourceVersion: "997971"
  selfLink: /api/v1/namespaces/default/services/expo-api-service
  uid: 144b9d1d-87d2-4096-9851-9563266b2099
spec:
  clusterIP: 10.12.0.122
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: http
  selector:
    app.kubernetes.io/instance: expo-api
    app.kubernetes.io/name: expo-api
  sessionAffinity: None
  type: ClusterIP
status:
  loadBalancer: {}
Run Code Online (Sandbox Code Playgroud)

我使用的入口控制器是 nginx 入口控制器,简单的入口规则设置如下 -

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/use-regex: "true"
  creationTimestamp: "2020-01-17T18:07:24Z"
  generation: 3
  labels:
    app.kubernetes.io/instance: expo-api …
Run Code Online (Sandbox Code Playgroud)

kubernetes google-kubernetes-engine .net-core asp.net-core-routing

2
推荐指数
1
解决办法
3259
查看次数

如何使用注入存储库的Isessionfactory来管理ninject和Nhibernate的事务?

我是DI和IoC模式的新手.

public class LazySessionContext
{
    private readonly ISessionFactoryImplementor factory;
    private const string CurrentSessionContextKey = "NHibernateCurrentSession";

    public LazySessionContext(ISessionFactoryImplementor factory)
    {
        this.factory = factory;
    }

    /// <summary>
    /// Retrieve the current session for the session factory.
    /// </summary>
    /// <returns></returns>
    public ISession CurrentSession()
    {
        Lazy<ISession> initializer;
        var currentSessionFactoryMap = GetCurrentFactoryMap();
        if (currentSessionFactoryMap == null ||
            !currentSessionFactoryMap.TryGetValue(factory, out initializer))
        {
            return null;
        }
        return initializer.Value;
    }

    /// <summary>
    /// Bind a new sessionInitializer to the context of the sessionFactory.
    /// </summary>
    /// <param …
Run Code Online (Sandbox Code Playgroud)

nhibernate aop ninject repository-pattern

1
推荐指数
1
解决办法
1416
查看次数