小编Sea*_*een的帖子

.Net Claims Auth - 无法设置当前主体

我正在尝试使用基于声明的身份验证重新登录系统.

到现在为止还挺好

单步执行,它似乎正确评估用户名和密码并正确创建声明主体(包括添加身份验证类型,以便根据此SO问题将IsAuthenticated设置为true .)

但是之后...

不知何故,身份似乎没有正确设置在线上.结果,我被直接重定向回登录页面.

代码

我有以下内容global.asax:

private void Application_PostAuthenticateRequest(object sender, EventArgs e)
{
    var currentPrincipal = ClaimsPrincipal.Current; 
    var transformer = new ClaimsTransformer(); //My own custom transformer; code below.
    var newPrincipal = transformer.Authenticate(string.Empty, currentPrincipal); // does the transformation

    // as I understand, it is proper & recommnded to set both of these
    Thread.CurrentPrincipal = newPrincipal;
    HttpContext.Current.User = newPrincipal;
}
Run Code Online (Sandbox Code Playgroud)

在我的登录控制器中,我对会员数据库进行了简单的测试.我在调试时验证了这newCP是一个有效的,经过身份验证的身份,具有预期的名称.

[HttpPost]
[AllowAnonymous]
public ActionResult UserLogin(LoginViewModel viewModel)
{

    var loginSuccess = Membership.ValidateUser(viewModel.UserName, viewModel.Password);

    if …
Run Code Online (Sandbox Code Playgroud)

c# asp.net authentication claims-based-identity asp.net-mvc-4

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

如何生成sysdate-30和sysdate + 30之间所有日期的列表?

目的和我迄今为止所做的一切

我正在尝试创建一个检查缺少的人工交易的视图.该视图将被提供给Crystal报表.

在这种情况下,视图应该采用sysdate + 30和sysdate -30之间的所有日期,然后应该为每个日期的活动员工留下外部联接所有人工记录.然后,它计算每个员工每个日期的人工交易数量.

这将传递给Crystal Report,Crystal Report将根据特定日期范围(视图在+/- 30范围内)进行过滤.从那里,Crystal中每位员工的总计数将总计,员工将显示零交易.

问题

在没有吐出每个日期的列表的情况下,最初,我正在为每个日期使用人工交易,但有些日期没有任何计数.这些人显示空交易日期为零小时.这表明他们在整个期间都没有收费,这是有道理的.

但是,当Crystal对该数据进行过滤并选择范围时,我相信它会遗漏这些空值,因此不允许我显示没有时间提交的所有人.

问题

有没有办法在视图中执行"选择(sysdate + 30)和(sysdate-30)之间的每个日期",以便我可以使用它来比较所有时间?

SQL(供参考)

SELECT QUERY.LABORRECLABORCODE
       , QUERY.LABORRECEMPLOYEENUM
       , QUERY.PERSONRECDISPLAYNAME
       , QUERY.TRANSSTARTDATE
       , COUNT(TRANSROWSTAMP) AS ROWCOUNT
FROM   (SELECT *
        FROM  (SELECT LABOR.LABORCODE      AS LABORRECLABORCODE
                      , LABOR.LA20         AS LABORRECEMPLOYEENUM
                      , PERSON.DISPLAYNAME AS PERSONRECDISPLAYNAME
               FROM   LABOR
                      LEFT OUTER JOIN PERSON
                        ON ( LABOR.LABORCODE = PERSON.PERSONID )
               WHERE  LABOR.STATUS = 'ACTIVE'
                  AND LABOR.LA20 IS NOT NULL
                  AND PERSON.DISPLAYNAME IS NOT NULL
                  AND LOWER(PERSON.DISPLAYNAME) NOT LIKE '%kimball%'
                  AND LOWER(PERSON.DISPLAYNAME) NOT …
Run Code Online (Sandbox Code Playgroud)

sql oracle gaps-and-islands

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

如何解析人类输入的逻辑属性,例如this和(那个或那个)?

作为即将开展的项目的一部分,我想进行设置,以便某个域对象可以应用于标签或标签组合.

我希望能够让用户以人类可读的方式输入这些组合,类似于:

  • tag-a和(tag-b或tag-c) - >适用于tag-a + tag-b或tag-a + tag-c
  • tag-d或(tag-e和tag-f) - >适用于tag-d或tag-e + tag-f

是否存在工具集来从一个输入文本字符串中解析这种逻辑?我可以用一定的区别({},[]等)定义幕后的标签,这样它们也可以更容易地解析出来.

只是想知道最好的方法是将人类可读的文本解析成那些不同的组合,而无需用户输入每个特定的组合.

谢谢!

.net c# parsing

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

如何在没有互联网的构建服务器/生产服务器上使用NuGet包?

背景

我有以下组件:

  • 我的本地解决方案(.NET 4.5)使用NuGet包.
  • 我的解决方案中的PowerShell构建脚本,其目标是构建,运行单元测试,Web.config转换等.
  • 没有连接互联网的构建服务器运行CruiseControl.NET,调用我的构建脚本来构建文件.它还可以作为开发构建的(IIS7)环境.
  • IIS7的生产服务器,无法访问Internet.

目标

我想从我的解决方案中利用NuGet包,并将它们作为源的一部分存储在本地 - 而不必依赖我的构建和生产服务器上的互联网连接或nuget包服务器.

  • 如何告诉MSBuild正确部署这些软件包,或者这是NuGet的默认行为?

cruisecontrol.net msbuild asp.net-mvc continuous-integration nuget

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

使第三方库实现接口的策略?

我想为我的一些课程编写单元测试.我的一些类依赖于使用文件系统并且没有模拟接口的第三方库.

我要模拟类以避免它依赖于文件系统,因为我的代码实际上只关心该代码的结果.

在不修改初始库的情况下,用于模拟库的具体类的最佳策略是什么?

我想我可能会创建一个实现接口并包含初始库对象的包装器对象.但是,我想确保在开始这条道路之前可能没有更好的方法.

或者,在这种情况下,像TypeMock这样的工具是否比Moq更适合?

c# integration-testing unit-testing interface moq

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

我可以忽略C#接口中的泛型类型吗?

背景

我正在开始研究一个名为Sieve.NET的小OSS库.

签名允许某人定义Sieve如下:

new EqualitySieve<ABusinessObject>().ForProperty(x => x.AnInt);
Run Code Online (Sandbox Code Playgroud)

这实际上返回了一个Sieve<ABusinessObject, int>,但我已尽力确保用户不必过多关心该部分.

任务

我想找到一种方法来设置一个接口,我根本不关心属性类型 - 只是它始终是一致的.

基本上,我希望能够声明一个ISieve<TFilterObjectType>,并且能够让该接口定义如下:

ISieve<TFilterObjectType, TTypeIDontCareAbout> ForValue(TTypeIDontCareAbout);
Run Code Online (Sandbox Code Playgroud)

我的目标是能够创建一个由ISieve<ABusinessObject>和不组成的课程ISieve<ABusinessObject, int>.

  • 有没有办法让接口声明一个实际上是通配符的类型,并说"我不关心这是什么类型,只是它是一致的?"

我最初的研究表明没有,但我希望被证明是错的.

更新和澄清

我真正想弄清楚的是:

  • 我允许用户创建一个EqualitySieve<ABusinessObject>().ForProperty(x=>x.AnInt).
  • 这实际上返回EqualitySieve<ABusinessObject, int>给用户,但由于它是一个流畅的界面我删除它们不必关心那个部分.
  • 我想EqualitySieve,LessThanSieve等来实现ISieve<ABusinessObject>.
  • 我想ISieve<ABusinessObject强制执行一项合同,我可以允许某人打电话ForValues()并期望它返回一个带有更新值的ISieve.
  • 然而,在那一点上,EqualitySieve<ABusinessObject>实际上是一个EqualitySieve<ABusinessObject, int>.但我并不特别关心那时的房产类型.
  • 从本质上讲,由于我抽象了EqualitySieve<ABusinessObject, int>部分,我还想看看是否可以通过接口引用对象时抽象出来.
  • 长期计划是我希望有一个SieveLocator,其中类可以实现IFindableSieve<ABusinessObject>理想情况下返回的ISieve<ABusinessObject>.然后我的目标是能够找到给定对象的Sieves.
  • 所以我认为这可能是我设计的限制,我将不得不寻找其他方法.对此提出的任何建议或对我可能没有看到的模式的引用也会有所帮助.

c# generics interface sieve.net

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

Jekyll post_url - 我错过了什么?

我正在使用Jekyll和Github页面,使用本地测试bundle exec jekyll serve.到目前为止,其他一切工作正常.

我的帖子位于/_posts根目录下的文件夹中,并且输出正确.

{% post_url %}无论我做什么,我似乎无法在其他内部帖子的帖子中工作.

示例/问题

  • 在我的_posts文件夹中,我有一个文件名为的帖子2011-04-14-free-million-dollar-idea-package-carriers-b2b-success.markdown
    • 这显示在我的网站上 [root]/2011/04/free-million-dollar-idea-package-carriers-b2b-success/
  • 我的配置指定 permalink: /:year/:month/:title

我在{% post_url %}另一篇文章中尝试了以下参考资料,尝试链接到帖子:

  • 2011-04-14自由百万美元的想法 - 封装 - 运营商的B2B佳绩
    • 根据帖子的文件名,我认为这是我应该引用的
  • / 2011/04 /免费亿美元的想法 - 封装 - 运营商的B2B,成功/
    • 基于帖子实际驻留在我的网站上的URL
  • 2011/04 /免费亿美元的想法 - 封装 - 运营商的B2B,成功/
    • 没有领先的斜线
  • / 2011/04 /免费亿美元的想法 - 封装 - 运营商的B2B佳绩
    • 没有尾随斜线
  • 2011/04 /免费亿美元的想法 - 封装 - 运营商的B2B佳绩
    • 没有任何斜线

每一个都会产生错误:

无法解析标签'post_url'中的帖子[引用]的名称

我错过了什么?

liquid jekyll github-pages

6
推荐指数
2
解决办法
2632
查看次数

错误:无法加载文件或程序集"Oracle.ManagedDataAccessDTC"或其依赖项之一

背景

  • 我有一个包含Console项目和MVC4 Webapp的解决方案.
  • 两者都引用Oracle.ManagedDataAccess(托管的ODP.NET数据访问提供程序).引用是指同一个文件.
  • 两者都没有引用Oracle.ManagedDataAccess DTC.
  • 在VS Configuration Manager中,该平台列为所有配置选项的"任何CPU".
  • 两者的平台目标是"任何CPU"

问题

控制台应用程序执行得非常好.

当我尝试使用MVC4应用程序时,我看到:

Could not load file or assembly 'Oracle.ManagedDataAccessDTC' or one of its dependencies. An attempt was made to load a program with an incorrect format.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.BadImageFormatException: Could not load file or assembly 'Oracle.ManagedDataAccessDTC' or one …
Run Code Online (Sandbox Code Playgroud)

oracle asp.net-mvc reference odp.net .net-assembly

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

如何在ASP.NET vNext中允许MIME扩展映射?

背景

我有一段需要在运行时使用Less.js编译的LESS代码 - 它通过JavaScript计算一些东西 - 所以我不能使用任务运行器等.

在我的index.html中,我有:

<head>
   ...
   <link rel="stylesheet/less" href="assets/less/DynamicHeight.less" />
   ...
   <script type="text/javascript" src="lib/less/less.js"></script>
   ... 
</head>
Run Code Online (Sandbox Code Playgroud)

问题

Less.js似乎无法找到该文件:

LESS.js barfing因为IIS无法提供文件

当我尝试直接访问该文件时,我看到:

在此输入图像描述

如何添加允许下载较少文件的配置?我仍然可以使用web.configvNext文件,或者我需要做一些事情config.json吗?

领导1:我应该使用Owin吗?

认为这可能是正确的道路,但我很陌生.

我看到了很多教程,比如K. Scott Allen的教程,参考代码如下:

    public void Configuration(IAppBuilder app)
    {
        var options = new StaticFileOptions
        {
            ContentTypeProvider = new FileExtensionContentTypeProvider()
        };
        ((FileExtensionContentTypeProvider)options.ContentTypeProvider).Mappings.Add(
            new KeyValuePair<string, string>(".less", "text/css"));
        app.UseStaticFiles(options);
    }
Run Code Online (Sandbox Code Playgroud)

然而,似乎在其当前版本中,asp.net正在寻找签名Configure(IApplicationBuilder app).

这个IApplicationBuilder类没有一个方法UseStaticFiles- 它只有一个签名IApplicationBuilder Use(Func<RequestDelegate, RequestDelegate> middleware).

我有一种感觉,这可能是解决问题的正确途径 - 我只是无法找到如何配置IAppliationBuilder映射MIME扩展.

permissions configuration mime-types asp.net-core

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

使用EF6在模型中定义一致的投影

背景

  • 我们有一张桌子,我们称之为Files.
  • 我们对某些行的属性,如Name,CreatedDate等.
  • 我们有一个包含文件内容的blob列FileBytes.

所以我们的模型看起来类似于:

public class FileEntity
{
  public string Name { get; set; }
  public DateTime CreatedDate { get; set; }
  public byte[] FileBytes { get; set; }

  // many other fields, most of which we'd like to use
}
Run Code Online (Sandbox Code Playgroud)

目标

  • 在某些查询中,我们只关心是否FileBytesnull字节本身.
  • 我们希望能够查询并在我们的模型类中填充一个字段,比如说,FileHasBytes这是一个bool.
  • 我们希望这个字段只存在于我们的类中,以便我们可以在webapp中将它作为模型的一部分引用.
  • 我们希望能够在不从字段中提取完整字节的情况下查询此bool值.

我如何使用EF6在我的模型类上定义一个字段,该字段将根据表中的另一个字段进行一致投影,而不会拉出该字段的全部内容?

考虑选项/解决方法

  • 计算专栏:我们希望避免这种情况,因为它似乎没必要
  • 观点:我们也想避免这种情况,因为似乎没有必要为单个列进行此操作
  • 投影到一个新对象:这是可行的,但我们希望能够直接映射而不必每次都选择一个新对象,包括随之而来的所有字段.

c# asp.net-mvc entity-framework entity-framework-6

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