小编Squ*_*ler的帖子

如何找出 System.Text.Json 中 JsonValue 的类型

因此,当我有 JsonNode 时,我可以询问它是 JsonObject 还是 JsonArray 并使用它们。但是当节点是一个实际值时,我如何知道它是字符串、数字还是布尔值?

当然,我可以尝试解析该值,但随后在字符串中传输的数字将变成数字而不是我想避免的字符串。

我将 System.Text.Json 与 .NET 6 一起使用。

c# system.text.json

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

在ASP.NET核心控制器中模拟HttpRequest

我正在ASP.NET Core中构建一个Web API,我想对控制器进行单元测试.

我注入了一个数据访问接口,我可以很容易地模拟.但是控制器必须检查Request for a token中的头部,并且当我自己简单地实例化控制器时,该请求似乎不存在,并且它也是get-only,所以我甚至无法手动设置它.我发现了许多模拟ApiController的例子,但这不是.NET核心.还有很多关于如何对.net核心控制器进行单元测试的教程和示例,但实际上没有使用过HttpRequest.

我建立了一个MCVE来证明这一点:

[Produces("application/json")]
[Route("api/Players")]
public class PlayersController : Controller
{
    private IAccessor accessor;

    public PlayersController(IAccessor ac = null):base()
    {
        accessor = ac ?? AccessorFactory.GetAccessor();
    }

    /// <summary>
    /// Get all players. Must be logged in.
    /// </summary>
    /// <returns>Ok or Unauthorized.</returns>
    [HttpGet]
    public IActionResult Get()
    {
        Player client = accessor.GetLoggedInPlayer(Request.Headers["token"]); // NRE here because Request is null
        if (client == null) return Unauthorized();
        return Ok(accessor.GetAllPlayers());

    }
}    
Run Code Online (Sandbox Code Playgroud)

我在我的测试项目中使用Moq和MSTest,并注入一个模拟的IAccessor.如何注入请求,或使用控制器初始化它?我想我的最后一招是反思,但我真的想避免这种情况.

c# unit-testing moq asp.net-core asp.net-core-webapi

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

SignalR 连接不会启动到 IIS 托管的应用程序

我制作了一个应用程序,并尝试通过 SignalR 连接到后端。

ASP.NET Core 3.1 后端托管在 IIS 中,以便于开发。

在客户端上调用 StartAsync 方法成功协商,但随后在 GET 上永远挂起:

GET http://localhost:81/signalr?id=W3F2TRVrx_lxZoinHzTzmA
Run Code Online (Sandbox Code Playgroud)

StartAsync() 调用无法返回。

这仅发生在 IIS 上。当我启动自托管应用程序时,它可以工作。

WebAPI 的其余部分也适用于 IIS。只是 SignalR 不会连接。

知道为什么吗?我发现相当 一个 问题和答案在这里,但他们没有真正解决这个问题的准确。

c# iis signalr asp.net-core

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