小编Bil*_*ill的帖子

ASP.NET 5 beta 8中的Windows身份验证支持

我有一个ASP.NET 5 MVC 6 Web API项目.大多数API端点都具有[Authorize]属性,并且在IIS和Visual Studio中项目的属性上都启用了Windows身份验证.这一切在beta 7中运行良好.

然而,在测试版8中,这不起作用.通过一个完全干净的项目很容易重现这个:

  1. 使用ASP.NET 5 Web API模板创建新项目.
  2. 获取项目的属性(而不是解决方案),转到"调试"选项卡,启用Windows身份验证并禁用"匿名".保存更改.
  3. 按F5并让它尝试运行该项目.

结果:

尝试确定托管应用程序的DNX进程的进程ID时发生错误.

  1. 现在返回项目属性并启用Anonymous.也启用Windows.保存更改.
  2. 转到您的控制器并添加[授权]属性.
  3. F5再次.

结果:

该项目启动,但Web API返回500.在"输出"窗口中注意:

Microsoft.AspNet.Mvc.Controllers.ControllerActionInvoker:警告:过滤器"Microsoft.AspNet.Mvc.Filters.AuthorizeFilter"上的请求授权失败.

发布到IIS时,该项目也不起作用.

正如beta 8 声明中所述,托管模型已经发生变化,IIS正在将请求传递给Kestrel." 服务器"页面未提供任何Kestrel支持Windows身份验证的指示.是否有一些技巧可以让Windows身份验证在beta 8中运行?

c# asp.net asp.net-mvc asp.net-core-mvc asp.net-core

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

Couchbase N1QL 结果根据 SELECT 语法改变形状

我是 Couchbase 的新手,遇到了一种让我非常困扰的行为。假设我已经在 C# 中定义了这个类:

public class Thing
{
    public string Property1 { get; set; }
    public string Property2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我将它存储在 Couchbase 中名为 ThingBucket 的存储桶中。现在,如果我进入 Couchbase 查询工作台并输入:

SELECT Property1, Property2 FROM ThingBucket
Run Code Online (Sandbox Code Playgroud)

我得到的是一个 JSON 对象,它将直接反序列化为一个 Thing 数组:

[
    {
        "Property1": "Value",
        "Property2": "Value"
    }
]
Run Code Online (Sandbox Code Playgroud)

这很好,因为我不需要做任何特别的事情就可以将它反序列化为事物。Couchbase C# 驱动程序调用 Json.NET 进行反序列化,并且它可以正常工作。

但是,如果我输入:

SELECT * FROM ThingBucket
Run Code Online (Sandbox Code Playgroud)

我没有得到一系列的东西。我得到了完全不同的东西:

[
    {
      "ThingBucket": {
          "Property1": "Value",
          "Property2": "Value"
      }
    }
]
Run Code Online (Sandbox Code Playgroud)

现在,我的 C# 代码中根本不存在一组形状,而不是 Thing 数组。它是一个对象数组,其中每个对象都有一个作为 Thing 的属性。为了让它反序列化到 Thing,我必须用 [JsonProperty] …

c# couchbase sql++

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