小编And*_*uin的帖子

C# 如何在不等待完成的情况下启动异步方法?

有时我需要启动一个工作非常缓慢的异步工作。我不在乎那份工作是否成功,我需要继续处理我当前的线程。

就像有时我需要发送一封电子邮件或短信,但工作速度很慢。我需要尽快回复网络客户端,所以我不想这样做await

我用谷歌搜索了这个问题,有些文章建议我这样写:

// This method has to be async
public async Task<Response> SomeHTTPAction()
{
    // Some logic...
    // ...

    // Send an Email but don't care if it successfully sent.
    Task.Run(() =>  _emailService.SendEmailAsync());
    return MyRespond();
}
Run Code Online (Sandbox Code Playgroud)

或者像这样:

// This method has to be async
public async Task<Response> SomeHTTPAction()
{
    // Some logic...
    // ...

    // Send an Email but don't care if it successfully sent.
    Task.Factory.StartNew(() =>  _emailService.SendEmailAsync());
    return MyRespond();
}
Run Code Online (Sandbox Code Playgroud)

会有警告说: before the call is completed. …

c# asynchronous

25
推荐指数
4
解决办法
2万
查看次数

System.Text.Json 序列化派生类属性

我正在将一个项目从 .NET 5 迁移Newtonsoft.JsonSystem.Text.Json.NET 5。

我有课:

abstract class Car
{
    public string Name { get; set; } = "Default Car Name";
}

class Tesla : Car
{
    public string TeslaEngineName { get; set; } = "My Tesla Engine";
}
Run Code Online (Sandbox Code Playgroud)

我试过:

var cars = new List<Car> 
{ 
    new Tesla(),
    new Tesla(),
    new Tesla()
};

var json = JsonSerializer.Serialize(cars);

Console.WriteLine(json);
Run Code Online (Sandbox Code Playgroud)

输出是:

[
  {"Name":"Default Car Name"},
  {"Name":"Default Car Name"},
  {"Name":"Default Car Name"}
]
Run Code Online (Sandbox Code Playgroud)

其中失去了我的财产:TeslaEngineName

那么如何序列化具有所有属性的派生对象呢?

.net c# json system.text.json

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

将需要磁盘存储的应用程序部署到Azure应用程序服务

我正在尝试将旧应用程序迁移到 Azure。让我们调用该应用程序OAP。OAP 目前本地部署在装有 Windows Server 2016 的典型服务器上。

用户在使用OAP时,可以通过浏览器将文件上传到系统中。

在OAP服务器端,由C#编写,将文件保存到本地磁盘。保存位置是 OAP 的可配置设置。F:\OAPStorage现在它值了。

现在我需要将需要磁盘存储的应用程序部署到Azure应用程序服务。我了解Azure应用程序服务提供了一些用于运行应用程序的空间。但如果应用程序可扩展怎么办?

我知道最好的做法是使用Azure Blob Storage. 但重构旧应用程序OAP是不可能的。我必须为其提供文件存储来保存用户上传的文件。可以将其仅保存在应用程序运行的磁盘上吗?

azure azure-storage azure-web-app-service

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

如何在 Visual Studio 中快速注入依赖项?

当我在 ASP.NET Core 项目上编码时,我的操作中需要一些服务,例如_tokenManager,我必须添加一个新的依赖项注入,如下所示:

vs-注射

为控制器添加新的依赖项至少需要 3 行代码,因此这并不容易。当我需要多个依赖项时,这会花费我很多时间。

顺便说一句,当我更改代码时,某些依赖项可能不是必需的,应将其删除。我必须一一检查这些依赖关系,以确保每一个都是必要的。那么,当我尝试使用这些依赖项时,是否有任何简单的方法可以自动添加这些依赖项,并建议我删除那些不需要的依赖项?

看来Visual Studio已经有这个功能了。如何启用此功能?

c# visual-studio asp.net-core

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

在 .NET Core 2.2 中获取默认的“AccountController”

当创建与个人身份验证的新的.NET 2.1的核心网络项目,该项目将被创建AccountController,并ManageController在它旁边。

命令是:

dotnet new mvc --auth 个人

然而,我在哪里可以找到默认AccountControllerManageController在.NET 2.2核心的新项目?我需要修改我的默认登录逻辑。

.net c# asp.net .net-core asp.net-core-2.1

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

无限路径路由到 ASP.NET Core 操作

我想创建一个路由,在 url 中路由无限的字符串集合。

像这样:

https://github.com/{orgName}/{projectName}/blob/{branchName}/{folderName1}/{folderName2}/.../{folderNameN}/{fileName}
Run Code Online (Sandbox Code Playgroud)

例如

https://github.com/AiursoftWeb/Nexus/blob/master/Account/Controllers/AccountController.cs
Run Code Online (Sandbox Code Playgroud)

将路由到此操作。路由结果应为:

orgName: AiursoftWeb
projectName: Nexus
branchName: master
folderNames: string[2] of:
    "Account"
    "Controllers"
fileName: AccountController.cs
Run Code Online (Sandbox Code Playgroud)

我如何做到这一点?

我尝试了以下方法:

https://github.com/{orgName}/{projectName}/blob/{branchName}/{folderName1}/{folderName2}/.../{folderNameN}/{fileName}
Run Code Online (Sandbox Code Playgroud)

但它不起作用。

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

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