小编Seb*_*Seb的帖子

ASP.NET 5(vNext)/ Web API/OAuth/OpenID /令牌/ Cookies /我真正需要什么?

我有一个现有的项目,我希望迁移到ASP.NET 5.

目前,它是一个简单的ASP.NET Web窗体项目,它引用了2个DLL:

  • 包含所有业务逻辑的Domain.dll
  • Data.dll包含所有数据访问代码

通常我不应该触摸那些目前工作正常的2个DLL.现在我想用2个新组件替换ASP.NET Web Forms项目:

  • 带角度2的前端SPA
  • ASP.NET 5的Web API后端(vNext)

我一直在玩VS2015中提供的模板,我也一直在阅读关于身份验证的所有内容,我必须说,我现在对于我真正需要的东西更加困惑...... :(

我的后端API需要MVC吗?所有的例子都是用ASP.NET MVC完成的,但是如果我有一个完全工作的SPA前端,我不需要一个简单的RESTful服务吗?

身份验证需要什么?我需要ASP.NET身份吗?Identity是旧会员的新版本吗?是否负责创建令牌?我已经拥有一个包含所有用户和散列密码的生产数据库.我的Domain.dll程序集还具有验证用户凭据所需的所有代码.

如果我想允许谷歌或Facebook等其他登录服务,我还需要什么?我使用ASP.NET 4.5和ASP.NET 5模板创建了一些Web应用程序,以查看事情是如何完成的,但这就是混乱变得更糟的地方.ASP.NET 4.5模板使用Owin的东西(我不熟悉),而ASP.NET 5模板则没有.

理想情况下,这就是我真正想要的:我想创建一个具有最少依赖性的Web API项目,我想避免使用会话和cookie,我希望能够使用Google和Facebook的服务登录

谢谢!

token asp.net-web-api2 asp.net-core

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

Angular2 ChangeDetection还是Observable?

我在登录时无法刷新的组件遇到困难.

该组件是navbar.component,其中包含指向我的页面/组件的链接.在它上面,有一个"登录"链接,呈现login.component,我可以在其上提供用户名和密码,然后单击登录按钮.login.component使用user.service,它使用login.component提供的用户名和密码调用后端,存储收到的令牌并重定向到'/'.

此时,应该隐藏navbar.component上的"登录"链接并显示"注销"链接,但在我单击导航栏上的其他链接之前没有任何反应.

2个链接如下:

<a [hidden]="userService.isLoggedIn" [routerLink]="['Login']">Login</a>
<a [hidden]="!userService.isLoggedIn" (click)="userService.logout();" href="javascript:void(0)">Logout</a>
Run Code Online (Sandbox Code Playgroud)

我理解存储令牌并从user.service重定向不会触发更改检测,并且我的属性userService.isLoggedIn不是可观察的,所以我知道我遗漏了一些东西,但不确定该方法是什么/应该是什么.

我已经尝试注入ApplicationRef来调用tick()方法,希望这会触发更改检测,但是失败了.

我应该使我的属性userService.isLoggedIn是一个可观察的吗?

observable angular2-changedetection angular

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

流畅的nHibernate保存或更新派生实体

我有一个实体,数据来自数据库,但是,它的一些属性填充了来自另一个源(文件系统)的数据,所以我所做的是我的存储库,而不是返回我的实体,返回一个代理对象,派生自主要实体,所以当我尝试保存或更新时的问题是它说该类没有持久性......

是否可以保存派生类但作为主类?我的代理对象与真实代理对象相同,只是它覆盖了几种方法.

谢谢!

Seb :)

c# nhibernate fluent save derived-class

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

流利的NHibernate内存泄漏

我将头发拉过似乎是内存泄漏的地方,但我找不到原因:(

我在自己的PC上构建了一个应用程序,这是一个拥有大量内存的笨重的野兽,所以我从未意识到我的进程会消耗这么多的内存。我只有在将代码发布到内存有限的生产环境后才意识到。

我使用了许多不同的技术和模式,包括WCF,但是现在我已经剥离了大部分代码,以找出消耗了这么多内存的原因...

这是应用程序的最简化版本,1个实体,1个映射以及一个从数据库检索的简单过程,运行时,我可以看到任务管理器中的过程不断增长:

using System;
using System.Linq;
using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
using FluentNHibernate.Mapping;
using NHibernate;
using NHibernate.Linq;

namespace ConsoleApplication18
{
    public class Program
    {
        private static void Main()
        {
            var i = 0;

            while ( i < 1000000 )
            {
                ISession session = BuildSessionFactory().OpenSession();
                ITransaction transaction = session.BeginTransaction();
                var users = session.Query< User >().ToList();
                transaction.Commit();
                transaction.Dispose();
                transaction = null;
                session.Dispose();
                session = null;
                Console.WriteLine( users.Count );
                users = null;
                i++;
            }
        }

        private static ISessionFactory BuildSessionFactory()
        {
            return Fluently.Configure() …
Run Code Online (Sandbox Code Playgroud)

nhibernate memory-leaks fluent-nhibernate

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

NHibernate与LINQ(谓词?)

请原谅我,如果我有点不清楚,我刚刚开始使用NHibernate/LINQ/Lambda表达式,我实际上不确定要寻找什么...

我在过去的4到5年里一直在使用.NET 2.0,除了我自己之外没有机会进化,这就是我现在开始学习新技术的原因:)

我一直在阅读很多博客和帖子,并开始了一个个人的小项目,我尝试尽可能地使用Repository模式.

我现在处于以下情况:

  • MyProject.Core.dll:我有这个核心程序集,包含所有业务逻辑并设置IRepository合同.它对存储库的实际实现一无所知,它是在运行时使用IoC解决的,所以这个核心dll没有引用NHibernate dll的.
  • MyProject.Data.NHibernate.dll:存储库的实现包含在此程序集中,该程序集包含对NHibernate dll的所有必要引用.

我的Repository实现看起来像这样:

public class GenericRepository<T> : IGenericRepository<T> where T : class
{
    ...
    public virtual IQueryable<T> All()
    {
        IList<T> entities = Session
            .CreateCriteria( typeof( T ) )
            .List<T>();
        return entities.AsQueryable<T>();
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

所以在我的核心DLL中,我可以获得对我的存储库的引用,并执行以下操作:

IList<Person> people = myRepository.All().ToList();
Run Code Online (Sandbox Code Playgroud)

这看起来效果很好,它查询数据库并返回Person表中的所有行.

但是,现在我想要做的是添加谓词:

IList<Person> daves = myRepository.All().Where(p => p.Name == "Dave").ToList();
Run Code Online (Sandbox Code Playgroud)

这很好,但当然会发生的事情是NHibernate首先查询数据库以返回所有行,然后LINQ过滤结果只返回名称为"Dave"的结果.

我一直在寻找互联网,但我还没有找到如何实现这一点,我发现很多东西似乎已经过时了,例如,我经常看到调用NH session.Linq()方法,我看着我的dll,这种方法无处可寻......

如果有人能指出我正确的方向,也许还有一些例子,我会非常感激.

非常感谢你!

linq nhibernate predicates

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

棘手的选择声明

我有一个包含类别的表,每个类别都有一个ID,一个名称和一个ParentID.问题是有3个级别,父类别,子类别和子类别.

我可以使用simple SELECT和a WHERE ParentID IS NULL子句提取父类别:

SELECT *
FROM Category
WHERE ParentID IS NULL
Run Code Online (Sandbox Code Playgroud)

但是,WHERE ParentID IS NOT NULL子句将返回子类别和子类别.

我正在寻找一种方法来只提取子类别,只提取子类别.

sql t-sql sql-server select

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

LinQ WHERE string.Contains或string.IndexOf?

我需要写一些可以得到相同结果的东西:

var result = collection.Where( o => o.Name.IndexOf( "some_string2" ) != -1 || o.Name.IndexOf( "some_string_2" ) != -1 || o.Name.IndexOf( "some_string3" ) != -1 )
Run Code Online (Sandbox Code Playgroud)

要检查的字符串的数量和值(some_string_1,2和3)是未知的(来自DB),所以更通用的...

我试过以下,但失败了......

var stringsToCheck = someCommaSeparatedStrings.ToLower().Split( ',' ).ToList();
var result = collection.Where( o => stringsToCheck.Contains( o.ToLower() ) );
Run Code Online (Sandbox Code Playgroud)

换句话说,我需要从集合中检索名称包含一些特定字符串的所有对象.

.net c# linq

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