Tag: C#的

在使用Ninject OWIN中间件的OWIN启动中dependency injectionUserStore

使用OWIN请求pipe道创buildApplicationUserManager时,使用dependency injection创build自定义UserStore时遇到问题。 背景 我正在尝试将我们的Web应用程序中的用户function从使用SimpleMembership迁移到新的ASP.NET标识。 当启动一个新的MVC 5项目时,单页应用程序的默认实现使用ASP.Identity,使用Entity Framework来实现UserStorefunction。 在我的例子中,我们已经使用NHibernate作为ORM,并且使用ninject来实现工作模式单元,以便每个请求有一个NHibernate会话,并且我想让ASP.Identity和我们现有的框架一起工作。 为此,我创build了一个自定义的UserStore,可以通过注入相关的存储库/ nhibernate会话等来创build。然后可以使用Ninject注入到Controller的构造函数中,而不是使用默认实现的GetOwinContextfunction。 为了做到这一点,我在Startup的ConfigureAuth(IAppBuilder应用程序)方法中注释了以下行,默认情况下它会创buildUserManager类: // app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create); 相反,我使用在安装Ninject.Web.Common.Webhost nuget包时创build的NinjectWebCommon来创build相关的绑定。 这个实现对一些UserManager操作可以正常工作,但是对于某些操作(如ResetPasswordAsync),由于未调用默认的ApplicationUserManager实现,因此失败,因此UserManager类中的UserTokenProvider从不设置: public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context) { var manager = new ApplicationUserManager(new UserStore<ApplicationUser>(context.Get<ApplicationDbContext>())); // Configure validation logic for usernames manager.UserValidator = new UserValidator<ApplicationUser>(manager) { AllowOnlyAlphanumericUserNames = false, RequireUniqueEmail = true }; // Configure validation logic for passwords manager.PasswordValidator […]

列表初始化期间临时对象的生存期

我一直认为,临时性的东西一直存在,直到一个完整的expression式结束。 然而这是一个std::vector和一个数组的初始化之间的一个奇怪的区别。 请考虑下面的代码: #include <iostream> #include <vector> struct ID{ static int cnt; // the number of living object of class ID at the moment of creation: int id; ID():id(++cnt){} ~ID(){ cnt–; } }; int ID::cnt=0; int main(){ int arr[]{ID().id, ID().id}; std::vector<int> vec{ID().id, ID().id}; std::cout<<" Array: "<<arr[0]<<", "<<arr[1]<<"\n"; std::cout<<" Vector: "<<vec[0]<<", "<<vec[1]<<"\n"; } 这个程序的输出是有点意外的(至less对我来说): Array: 1, […]

在ASP.NET Web API 2中禁用* all *exception处理(为我自己腾出空间)?

我想在中间件组件中连接exception处理,如下所示: public override async Task Invoke(IOwinContext context) { try { await Next.Invoke(context); } catch (Exception ex) { // Log error and return 500 response } } 然而,我想捕捉到的一些exception是在Web APIpipe道被捕获并转换为HttpErrorResponse之前,我可以find它们。 在这个过程中,我失去了很多关于错误的细节,所以在debugging时我不能获得有用的堆栈跟踪信息(debugging程序甚至在引发exception时都不会停止 – 我必须手动执行代码并查看那里失败…)。 我尝试添加一个自定义exception处理程序与以下实现: public Task HandleAsync(ExceptionHandlerContext context, CancellationToken cancellationToken) { var owinContext = context.Request.GetOwinContext(); owinContext.Set(Constants.ContextKeys.Exception, context.Exception); return Task.FromResult(0); } 通过config.Services.Replace(typeof(IExceptionHandler), new MyExceptionHandler());注册config.Services.Replace(typeof(IExceptionHandler), new MyExceptionHandler()); 在我的启动configuration,但通过执行Next.Invoke(context)后,看着它 context.Get<Exception>(Constants.ContextKeys.Exception); […]

有LLVM IR库如何从Ubuntu交叉编译到iOS,Android,Windows和Mac?

我有LLVM IR表单中的所有依赖关系和库。 如何交叉编译我的库,从Linux(例如Ubuntu)的iOS,Android,Windows和Mac平台的共享对象? 请提供一个示例脚本,它将编译任何示例库,并至less依赖于您select的另一个库到所有4个平台(例如OpenCV或ZeroMQ 4+)。

WPF使用MVVM模式浏览视图

我正在使用MVVM模式构build我的第一个WPF。 在这个社区的帮助下,我设法创build了我的模型,我的第一个ViewModel和视图。 现在我想为应用程序devise基本的应用程序布局界面增加一些复杂性。 我的想法是至less有两个子视图和一个主视图,并将它们分开放在几个XAML上: Main.XAML Products.XAML Clients.XAML Main将有一个菜单和一个空间来加载子视图(产品和客户端)。 现在,遵循MVVM模式,视图之间的所有导航逻辑应该被写在ViewModel上。 所以mi想法是有4个ViewModels: MainViewModel ProductsViewModel ClientsViewModel NavigationViewModel 那么NavigationViewModel应该包含一系列的子视图模型? 一个活跃的视图模型是可行的? 所以我的问题是: 1)如何使用MVVM模式在主视图中加载不同的视图(产品,客户端)? 2)我如何实现导航视图模型 3)如何控制打开或活动视图的最大数量? 4)如何在打开的视图之间切换? 我一直在做大量的search和阅读,找不到任何简单的MVVM导航WPF导航,在主视图中加载多个视图的例子。 其中许多是: 1)使用外部工具包,我现在不想使用。 2)将创build所有视图的所有代码放在一个单独的XAML文件中,这似乎不是一个好主意,因为我需要实现近80个视图! 我在这里的道路上? 任何帮助,特别是一些代码将被折衷。 谢谢! UPDATE 所以,我build立了一个@LordTakkera的build议,但卡住了testing项目。 这是我的解决scheme的样子: 我创造: 两种模式(客户和产品) 一个MainWindow和两个wpf用户控件(客户和产品)XAML。 三个ViewModel(客户,产品和主ViewModel) 然后我把每个视图上的dataContext设置为相应的viewModel。 之后,我使用ContentPresenter创buildMainWindow,并将其绑定到viewmodel的属性。 MainWindow.XAML <Window x:Class="PruevaMVVMNavNew.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="519" Width="890"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="150"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="80"/> […]

我如何确定最快的链接顺序?

我有大约50个不同的静态库被链接到我的C + +项目和链接平均需要70年代。 我发现这次更改库的链接顺序。 如果链接器不需要在整个符号表中search一组符号,就可以预计到这一点。 我想我可以使用“nm”来获得静态库之间的依赖关系图。 但是,这只会给我一个“正确的”链接顺序。 获得最快链接顺序的因素是什么? 我觉得这将与上述依赖关系图有关,通过获得一个遍历,试图尽量减less一些数量,但我真的不知道是哪一个。 任何帮助,将不胜感激。 我现在主要是使用intel编译器和gcc编译器。 当我用top检查它们时,它们似乎都在使用GNU ld链接器。 希望这可以帮助… 所以为了澄清一下我想要问的东西,我已经知道如何从一组静态库中获得一个1遍的顺序。 我自己写了这个脚本,但是根据Olaf的回答,下面有这样的着名工具。 我的问题是,我已经有两个单程链接sorting,其中一个在〜85s内运行,另一个在〜70s内运行。 很明显,我们在1阶命令中还可以做更多的优化。

使用RSA C#签名和validation签名

我最近发布了有关使用RSAencryption大数据的问题,我终于完成了这个工作,现在我正在使用用户的私钥进行签名,并使用相应的公钥进行validation。 但是,每当我比较签名的数据和原来的消息,我基本上只是得到错误返回。 我希望你的一些人能看到我做错了什么。 这里是代码: public static string SignData(string message, RSAParameters privateKey) { //// The array to store the signed message in bytes byte[] signedBytes; using (var rsa = new RSACryptoServiceProvider()) { //// Write the message to a byte array using UTF8 as the encoding. var encoder = new UTF8Encoding(); byte[] originalData = encoder.GetBytes(message); try { […]

multithreading是否强调内存碎片?

描述 当使用openmp的parallel构造来分配和释放具有4个或更multithreading的随机大小的内存块时,程序似乎开始在testing程序的运行时间的后半部分泄漏大量的内存。 因此,它将消耗的内存从1050 MB增加到1500 MB或更多,而实际上并没有使用额外的内存。 由于valgrind没有显示任何问题,我必须假设内存泄漏实际上是内存碎片的强调效果。 有趣的是,如果2个线程每个分配10000个分配,效果不会显示,但是如果4个线程分别分配5000个分配,则效果会很强。 另外,如果分配的块的最大大小减less到256kb(从1mb),效果变弱。 重型并发可以强调分割吗? 或者这更可能是一个堆中的错误? testing程序说明 演示程序的构build是为了从堆中获取总共256 MB的随机大小的内存块,并进行5000次分配。 如果内存限制被触发,首先分配的块将被释放,直到内存消耗降到限制以下。 一旦执行了5000个分配,所有的内存都被释放,循环结束。 所有这些工作都是由openmp生成的每个线程完成的。 这种内存分配scheme允许我们预计每个线程(包括一些簿记数据)的内存消耗约为260 MB。 演示程序 由于这真的是你可能想要testing的东西,所以你可以用一个简单的makefile从下拉框下载示例程序。 按原样运行程序时,应该至less有1400 MB的RAM可用。 随意调整代码中的常量以满足您的需求。 为了完整,实际的代码如下: #include <stdlib.h> #include <stdio.h> #include <iostream> #include <vector> #include <deque> #include <omp.h> #include <math.h> typedef unsigned long long uint64_t; void runParallelAllocTest() { // constants const int NUM_ALLOCATIONS = 5000; // alloc's […]

C#是'types检查结构奇怪的.NET 4.0 x86优化行为

更新:我已经提交了Microsoft Connect的错误报告 ,请投票! 更新2:微软已经将bug报告标记为已修复 由微软于18/08/2010在17:25发布 该错误将在未来版本的运行时中修复。 恐怕现在判断是否会在服务包或下一个主要版本中还为时过早。 由于升级到VS2010,我得到一些非常奇怪的行为与“is”关键字。 下面的程序(test.cs)在debugging模式(对于x86)编译时输出True,在(对于x86)优化编译时输出False。 编译x64或AnyCPU中的所有组合会给出预期结果,即True。 在.NET 3.5下编译的所有组合都会给出预期的结果,True。 我正在使用下面的batch file(runtest.bat)来编译和testing使用编译器.NET框架的各种组合的代码。 有没有人在.NET 4.0下看到过这种types的问题? 当运行runtests.bat时,其他人是否在计算机上看到和我一样的行为? @ $ @#$? 有没有解决这个问题? test.cs中 using System; public class Program { public static bool IsGuid(object item) { return item is Guid; } public static void Main() { Console.Write(IsGuid(Guid.NewGuid())); } } runtest.bat @echo off rem Usage: rem runtest — […]

为什么在C ++ 11或C ++ 14中没有安装迭代器?

C ++ 98有front_inserter , back_inserter和inserter ,但是在C ++ 11或者C ++ 14中似乎没有这些版本的版本。 有没有技术原因,我们不能有front_emplacer , back_emplacer和emplacer ?