我有一种情况,我想使用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
我以前在我的一个属性中设置了属性注入设置
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) 我在这里遇到了一个基本的问题.虽然这可以通过重复循环来解决.我想知道如何在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来解决这个问题?
在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) 我有一个锚点,它应该用局部视图替换网格。
<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,我可以看到内容正在响应中返回。有人知道这里有什么问题吗?
我已将一个简单的 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
我是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) .net-core ×2
asp.net-mvc ×2
angularjs ×1
aop ×1
asp.net-core ×1
kubernetes ×1
linq ×1
list ×1
nhibernate ×1
ninject ×1
oclazyload ×1