小编t.j*_*.j.的帖子

ASP.Net Core 2.0 SignInAsync返回异常值不能为null,提供者

我有一个ASP.Net Core 2.0 Web应用程序我正在使用单元测试进行改造(使用NUnit).该应用程序工作正常,迄今为止大多数测试工作正常.

但是,测试身份验证/授权(用户是否已登录并可以访问已[Authorize]过滤的操作)失败...

System.ArgumentNullException: Value cannot be null.
Parameter name: provider
Run Code Online (Sandbox Code Playgroud)

...后...

await HttpContext.SignInAsync(principal);
Run Code Online (Sandbox Code Playgroud)

......但目前尚不清楚其根本原因是什么.代码执行在此处停止,并且IDE中没有显示异常,但代码执行返回给调用者,然后终止(但我仍然The program '[13704] dotnet.exe' has exited with code 0 (0x0).在VS的输出窗口中看到)

测试资源管理器显示红色并提供引用的异常(否则我不知道问题.)

我正在努力创建一个指向人们的复制品(到目前为止有点参与其中).

有谁知道如何确定根本原因?这是DI相关的问题(测试中没有提供但是正常执行中需要的东西)?

UPDATE1:提供请求的验证码......

public async Task<IActionResult> Registration(RegistrationViewModel vm) {
    if (ModelState.IsValid) {
        // Create registration for user
        var regData = createRegistrationData(vm);
        _repository.AddUserRegistrationWithGroup(regData);

        var claims = new List<Claim> {
            new Claim(ClaimTypes.NameIdentifier, regData.UserId.ToString())
        };
        var ident = new ClaimsIdentity(claims);
        var principal = new ClaimsPrincipal(ident);

        await HttpContext.SignInAsync(principal); // FAILS HERE

        return …
Run Code Online (Sandbox Code Playgroud)

c# nunit-3.0 asp.net-core-2.0

14
推荐指数
1
解决办法
2720
查看次数

asp5 IConfigurationRoot获取json数组

我正在尝试向我的asp 5 mvc 6 web应用程序("rc1-final"库)提供一些额外的配置数据,以便部署在Azure上.此附加数据的一部分由json文件中的数据数组组成.我可以将这个json文件添加到我的配置中,并且在调试时如果我观察配置对象,我可以浏览到提供程序条目,看到它确实联系了我正在寻找的数据数组.

但是,尝试Configuration["extraData"]产生null(因为该属性的"值"为null,即使它显然包含元素数组.

我没有问题访问存储在json配置中的单个值(例如我的数据库连接字符串和其他值.)看起来好像不支持数组格式的json数据?

请参阅以下示例json文件(根据jsonlint进行验证,对我来说似乎很好)...

//extraData.json
{
  "ExtraData": [
    {
      "Id": 1,
      "Description": "The first identifier"
    },
    {
      "Id": 2,
      "Description": "The second identifier"
    },
    {
      "Id": 3,
      "Description": "The third identifier"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

...以及以下示例Startup.cs ...

//Startup.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Hosting;
using Microsoft.AspNet.Identity.EntityFramework;
using Microsoft.Data.Entity;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;

using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using Newtonsoft.Json.Linq;
using System.IO;
using Microsoft.AspNet.Authentication.Cookies;
using System.Net;


namespace MyProj { …
Run Code Online (Sandbox Code Playgroud)

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

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

JsonSerializer.Deserialize 失败

考虑代码...

using System;
using System.Text.Json;

public class Program
{
    public static void Main()
    {
        int id = 9;
        string str = "{\"id\": " + id + "}";
        var u = JsonSerializer.Deserialize<User>(str);
        Console.WriteLine($"User ID: {u.Id}, Correct: {id == u.Id}");  // always 0/init/default value
    }
}


public class User {
    public int Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

为什么数据没有正确反序列化到User对象中?我还通过DotNetFiddle验证了该行为,以防它是我系统的本地问题。不会抛出任何异常。

我的实际执行是从读[ApiController][HttpPost]后我的行动return Created("user", newUser)。它在我的 MVC/Razor 项目中通过_httpClient.PostAsync. 我在Created返回到PostAsync调用时验证了这些值是正确的,但无论如何,从响应正文解析的值仅包含默认值(实际 ID …

c# asp.net-core-mvc .net-core-3.1 system.text.json

10
推荐指数
1
解决办法
1万
查看次数

VS Code 调试端口不匹配

细节

在Win10中。VS Code、帮助、关于...

[窗口标题]
Visual Studio Code

[内容]
版本 1.14.2
提交 cb82febafda0c8c199b9201ad274e25d9a76874e
日期 2017-07-19T23:34:09.706Z
Shell 1.6.6
渲染器 56.0.2924.87
节点 7.4.0

生成launch.json并根据我的runtime...设置进行调整

{
    // Use IntelliSense to learn about possible Node.js debug attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "Launch Program",
            "cwd": "${workspaceRoot}",
            "runtimeExecutable": "npm.cmd",
            "runtimeArgs": [
                "run", "functional-test"
            ],
            "skipFiles": [
                "<node_internals>/**/*.js"
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

上面引用的 Npm …

windows debugging node.js visual-studio-code

6
推荐指数
0
解决办法
1380
查看次数

ef7无法检索子集合的子对象的属性

EF7不支持延迟加载子对象,但支持该.Include()功能.话虽这么说,我正在努力解决一些问题,我不确定它是否在EF7中是不可能的,或者我只是盯着这个太久了.

假设如下所示(check reg.Activities.Task.Ordinal(an int),Task始终为null,即使我自己检查数据库并且确定实际上存在相关记录)...

public void SomeOtherMethod()
    var r = getRegistration(User.UserName);
    var act = r.Activities
      .Where(a => a.IsDone == false)  // unfinished
      .OrderByDescending(o => o.Task.Ordinal)  // Task indicates activity type, is always null
      .FirstOrDefault();  // to get a user's most recent unfinished activity

    //DO SOMETHING WITH ACT
}

public Registration getRegistration(string userName) {
    var reg = _context.Registrations
      .Where(r => r.User.UserName == userName)  // this works however?
      .Include(r => r.Acvitities)  // List<Activity>
      .FirstOrDefault();

      return reg;
} …
Run Code Online (Sandbox Code Playgroud)

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

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

引用到单独的子文件夹

我花了几天的时间,终于找到了一个似乎有效的解决方案。然而,它似乎有点脆弱,或者可能是不明智的。

我希望所有非系统引用的程序集(当前使用的项目库是 NuGet 管理的)都包含在构建输出的“libs”子文件夹中。

我的 csproj 文件底部包含的以下代码段执行此操作(通过谷歌搜索和我在这里找到的几个问题构建。)

  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets. -->
  <Target Name="BeforeBuild">
    <Message Text="### Removing existing 'lib' folder" Importance="high" />
    <RemoveDir Directories="$(TargetDir)libs" />
  </Target>
  <Target Name="MoveLibrariesOnBuild" AfterTargets="Build">
    <ItemGroup>
        <Libraries Include="%(Reference.HintPath)" >
           <MissingHintPath>$([MSBuild]::ValueOrDefault('%(Reference.HintPath)', '').Equals(''))</MissingHintPath>         
        </Libraries>
    </ItemGroup>
    <Message Text="### Moving libraries to 'libs' ###" Importance="high" />
    <Copy SourceFiles="@(Libraries)" 
            DestinationFiles="$(TargetDir)libs\%(Filename).dll" 
            Condition="%(Libraries.MissingHintPath) == False" 
            SkipUnchangedFiles="false" 
            OverwriteReadOnlyFiles="true" />
  </Target> …
Run Code Online (Sandbox Code Playgroud)

c# msbuild visual-studio

2
推荐指数
1
解决办法
2245
查看次数