小编Ale*_*lex的帖子

执行单元测试时,asp.net核心中的TryValidateModel引发Null参考异常

我正在尝试编写用于Asp.Net Core Web API的ModelState验证的单元测试。

我读到,最好的方法是使用TryValidateModel函数。但是,每次我运行单元测试时,它都会引发NullReference异常。
我发现有很多文章暗示了这一点controller.ModelState.AddModelError("",""),但是我对此并不感兴趣,因为我认为这超出了实际模型验证的实际目的。

[TestMethod]
public void TestMethod1()
{
    var controller = new TestController();

    controller.Post(new Model());
}


public class TestController : Controller
{
    public IActionResult Post(Model model)
    {
        bool b = TryValidateModel(model)

        return Ok();
    }
}
Run Code Online (Sandbox Code Playgroud)

TryValidateModel(model)总是从TryValidateModel(model, prefix)函数抛出NullReference Exception 。

感谢任何帮助。

c# unit-testing asp.net-core

8
推荐指数
1
解决办法
1885
查看次数

IAsyncEnumerable在C#8.0预览中不起作用

我正在玩C#8.0预览,无法开始IAsyncEnumerable工作.

我尝试了以下内容

public static async IAsyncEnumerable<int> Get()
{
    for(int i=0; i<10; i++)
    {
        await Task.Delay(100);
        yield return i;
    }
}
Run Code Online (Sandbox Code Playgroud)

我最终使用了一个名为Nuget的包AsyncEnumerator,但是我收到以下错误:

  1. 错误CS1061' IAsyncEnumerable<int>'不包含' '的定义,GetAwaiter并且没有可访问的扩展方法' GetAwaiter' IAsyncEnumerable<int>可以找到类型' ' 的第一个参数(你是否缺少using指令或汇编引用?)
  2. 错误CS1624' Program.Get()' 的主体不能是迭代器块,因为' IAsyncEnumerable<int>'不是迭代器接口类型

我在这里错过了什么?

c# c#-8.0 iasyncenumerable

8
推荐指数
1
解决办法
5025
查看次数

调用SignalR Hub不适用于Asp.Net Core Web API

我是SignalR的新手。我正在尝试设置一个Asp.Net Core WebAPI,以便其他客户端可以使用SignalR连接到它并获取实时数据。我的Hub类是:

public class TimeHub : Hub
{
    public async Task UpdateTime(string message)
    {
        await Clients.All.SendAsync("ReceiveMessage", message);
    }
}
Run Code Online (Sandbox Code Playgroud)

我有一个中继课程,如下所示:

public class TimeRelay : ITimeRelay
{
    private readonly IHubContext<TimeHub> _timeHubContext;

    public TimeRelay(IHubContext<TimeHub> context)
    {

        _timeHubContext = context;
        Task.Factory.StartNew(async () =>
        {
            while (true)
            {
                await context.Clients.All.SendAsync("UpdateTime", DateTime.Now.ToShortDateString());
                Thread.Sleep(2000);
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

启动类:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

    services.AddSignalR();
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.UseDeveloperExceptionPage();

    app.UseHttpsRedirection();

    app.UseSignalR((x) =>
    {
        x.MapHub<TimeHub>("/timeHub");
    });
    app.UseMvc();
}
Run Code Online (Sandbox Code Playgroud)

客户端是一个控制台应用程序,代码为:

class …
Run Code Online (Sandbox Code Playgroud)

c# signalr .net-core asp.net-core asp.net-core-webapi

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

.net core 3.0 中 WPF 中的图像标记不起作用

我正在使用 .net core 3.0 预览版开发 WPF 应用程序。

xaml.net core 3.0 preview和中都尝试了以下代码行.net framework

<Grid>
    <Image Source="system-tray.jpg"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)

这在以下情况下工作正常,.Net Framework但在以下情况下不起作用.Net Core 3.0 preview

有什么想法吗!..

wpf xaml .net-core .net-core-3.0

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

WPF中OnInitialized和OnSourceInitialized的区别

我试图在 WPF 中添加全局热键。

        var helper = new WindowInteropHelper(this);
        var handle = helper.Handle;
        var source = HwndSource.FromHwnd(handle);
Run Code Online (Sandbox Code Playgroud)

当我把这段代码在OnInitialized覆盖方法,它返回值0用于handle变量和失败HwndSource.FromHwnd(handle)

但是,当我把它放在OnSourceInitializedoverride 方法中时,它会为handle变量返回一些随机值并且在HwndSource.FromHwnd(handle).

我试图理解为什么这是这种行为。
WPF 中的 OnInitialized 和 OnSourceInitialized 有什么区别?

c# wpf

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

在数据库中找不到数据时的 HTTP 状态代码

我试图了解在以下用例中使用哪个 Http 状态代码

  1. 用户尝试使用GET输入在端点上执行操作ID
  2. 所请求的数据在数据库中不可用。

如果服务发回:

  1. 404 - Not Found
    由于在数据库中找不到数据
  2. 400 - Bad Request
    由于输入请求中的数据无效或存在于数据库中
  3. 200 - OKnull回应
  4. 200 - OK带有错误消息
    在这种情况下,我们可以使用标准错误消息,以及涵盖所有响应的契约200 OK(如下所示)。
 BaseResponse {
  Errors [{
    Message: "Data Not Found"
  }],
  Response: null
 }
Run Code Online (Sandbox Code Playgroud)

遵循哪种正确(或标准)方法?

提前致谢。

api standards http-status-codes

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

检查任一列是否在 SQL 中插入数据时具有值

我有一个场景,我在一个表中有 3 列C1, C2, C3allNVARCHARNULLABLE.
我正在使用 SQL Server。

问题在于插入我需要检查的数据中是否至少有 1 列有数据。

例如:
Valid data下面:

C1 C2 C3
空值 你好 世界
你好 空值 空值
你好 世界

Invalid data 以下:

C1 C2 C3
空值 空值 空值

是否可以在插入操作上添加这样的检查?

sql sql-server

0
推荐指数
1
解决办法
29
查看次数