标签: .net-core

如何从url路径获取Id

我的问题可能看起来很简单,但我被这个问题困扰了一段时间。

代码控制器:

[Route("api/ReceiptOrders/{receiptOrderNo}/[controller]")]
[ApiController]
public class ReceiptPositionsController : ControllerBase
{
    [HttpPost("{orderNo}")]
    public async Task<IActionResult> PostReceiptOrderPositions(
        [FromBody] IEnumerable<ReceiptPositionForCreationDto> receiptPositions)
    {
        var receiptOrder = await _repositoryManager.ReceiptOrder.GetReceiptOrderByOrderNoAsync(receiptOrderNo, false);
        //More code here...
    }
}
Run Code Online (Sandbox Code Playgroud)

网址:https://localhost:7164/api/ReceiptOrders/RO-20220731-4/ReceiptPositions

我的问题是:如何获取 ReceiptOrderNo(在本例中为 RO-20220731-4)?我需要它来填充“GetReceiptOrderByOrderNoAsync”方法。

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

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

在代码中进行时 IEnumerable&lt;&gt; 变为 null

我使用 .Net Core 编写了一个非常简单的 Windows 应用程序,它生成一个包含 1000 条记录的 IEnumerable。在以下示例代码中,我的 IEnumerable 返回正确的记录,而第二行代码返回 null。

IEnumerable<test> myList = null; 
myList     = from item in myTable select ....();        
var result = myList.ToList();  //myList has 1000 records                  
int total  = myList.Count(); //myList is null
Run Code Online (Sandbox Code Playgroud)

我不明白为什么myList不持久化而改为null. 看起来好像用过一次就被冲掉了。


请看下面的真实代码:

using var dbContextTransation = _context.Database.BeginTransaction();
try
{
    IEnumerable<BuoyLocation> positionList = null; 
    var allPosition = csvReader.GetRecords<MyFormat>();
    
    positionList =
        from location in allPosition
        select new Location()
        {                                              
            LocationDateTime = location.Fecha.Add(new TimeSpan( Convert.ToInt32( location.Hora.Left(2) ), Convert.ToInt32( location.Hora.Right(2) …
Run Code Online (Sandbox Code Playgroud)

c# .net-core

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

如何在 ASP.NET Core 6 中创建构建器之前读取 IConfiguration

我正在使用以这种方式创建构建器的库

var webApiOptions = new AkaAppOptions<ApiOptions>(ApplicationId, authenticationType);
var builder = new AkaAppBuilder<ApiOptions>(args, webApiOptions);
Run Code Online (Sandbox Code Playgroud)

现在这个构建器包含IConfiguration我需要的。

我的问题是我需要阅读配置才能知道authenticationType它是什么类型。这发生在我有一个WebApplicationBuilder.

我的选择是创建临时的WebApplicationBuilder,读取配置,然后创建这个库生成器,我猜这里的缺点是内存。

另一种选择是手动读取appsettings.json以获取该信息/缺点是内存和内存环境应用程序设置?

读哪一篇

例如,我会做这样的事情来创建临时构建器,而不是我需要的构建器

var tempBuilder = WebApplication.CreateBuilder(args);
var useExternalAuth = tempBuilder.Configuration.GetSection("ExternalAuth").Exists();
var authenticationType = useExternalAuth ? AuthenticationType.ExternalService : AuthenticationType.Service;

var webApiOptions = new AkaAppOptions<ApiOptions>(ApplicationId, authenticationType);
var builder = new AkaAppBuilder<ApiOptions>(args, webApiOptions);
Run Code Online (Sandbox Code Playgroud)

还有其他选择吗?

c# .net-core asp.net-core asp.net-core-6.0

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

为什么比较 DateTime 和 null 时没有编译器警告?

Visual Studio 显示编译器警告CS04721,其中(int)5 == null读取

表达式的结果始终为“false”,因为“int”类型的值永远不等于“int”类型的“null”?

bool x = (int)5 == null;
Run Code Online (Sandbox Code Playgroud)

DateTime但是,如果使用对象,则不会发出警告。

bool y = DateTime.UtcNow == null;
Run Code Online (Sandbox Code Playgroud)

由于DateTimeis not Nullable<DateTime>,因此它永远不可能为 null 。第二个语句没有显示类似警告的原因是什么?

c# compiler-warnings visual-studio .net-core

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

如何以明显的方式证明不同的执行顺序

我想以一种直白的方式演示这个异步示例:

Thing[] stuff = await Context.Things
    .Where(a => true)
    .ToArrayAsync();

Console.WriteLine("Beep");
Run Code Online (Sandbox Code Playgroud)

将以与同步版本不同的顺序执行:

Thing[] stuff = Context.Things
    .Where(a => true)
    .ToArray();

Console.WriteLine("Boop");
Run Code Online (Sandbox Code Playgroud)

我想表明第二个版本始终在打印输出之前创建数组,而第一个版本的执行情况可能有所不同。

不知道该怎么做,显然很清楚。

c# async-await .net-core

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

当我们可以使用 foreach() 迭代集合时,为什么要使用 IEnumerable&lt;T&gt;

我想知道我们应该使用的确切位置IEnumberable<T>

我知道如何IEnumerable<T>工作和返回IEnumerator<T>以及所有这些,但最终目标IEnumerable<T>是从集合中查询数据不是吗?这就是我们已经可以使用 foreach() 循环做到的事情吗?那么什么时候使用IEnumerable<T>呢?IEnumerable<T>查询集合的唯一选项的实际场景是什么?

.net c# asp.net ienumerable .net-core

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

ASP.NET Core Web API 未返回完整对象

我有一个 ASP.NET Core Web API 返回ReconResults. 由于某种原因,API 没有向我发送对象的消息部分。我在离开 API 之前看到消息的值。我确信我错过了一些非常愚蠢的东西。

模型:

public class ReconResults
{
    public IEnumerable<int> ReconIds { get; set; }
    public IEnumerable<ReconErrorResults> Messages { get; set; }
    public bool Success { get; set; }
}

public class ReconErrorResults
{
    int ErrNo { get; set; }
    string ErrorMessage { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

回购协议:

using (var connection = sqlProvider.GetConnection())
{
    var aresults = connection.QueryMultipleAsync("recon.usp_pro",
        parameters,
        commandTimeout: 1500,
        commandType: CommandType.StoredProcedure).Result;

    results.Messages = await aresults.ReadAsync<ReconErrorResults>();
    results.ReconIds = await aresults.ReadAsync<int>(); …
Run Code Online (Sandbox Code Playgroud)

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

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

URL 安全 C# AES 加密

我在创建在 URL 中传递的加密字符串时遇到问题。我在解密后得到不正确的字符或错误。“输入数据不是一个完整的块”

这是我的类来加密和解密我的字符串:

    public static class StringCipher
    {
        public static string Encrypt(string s)
        {
            return AesProvider(s, (aes, raw) =>
            {
                using var ms = new MemoryStream();
                using (var cs = new CryptoStream(ms, aes.CreateEncryptor(), CryptoStreamMode.Write))
                {
                    cs.Write(raw, 0, raw.Length);
                }

                return Encoding.UTF8.GetString(ms.ToArray());
            });
        }

        public static string Decrypt(string s)
        {
            return AesProvider(s, (aes, raw) =>
            {
                using var ms = new MemoryStream();
                using (var cs = new CryptoStream(ms, aes.CreateDecryptor(), CryptoStreamMode.Write))
                {
                    cs.Write(raw, 0, raw.Length);
                }
                return Encoding.UTF8.GetString(ms.ToArray());
            });

        }
        
        private …
Run Code Online (Sandbox Code Playgroud)

c# encryption aes .net-core

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

.NET Core 7 SDK 未显示在 Visual Studio 2019 中

我想在 .NET Core 中构建一个 Web API 项目,并且我是 .NET Core 的完全初学者。

我已经安装了这个.NET 7 SDK。我有 Visual Studio 2019,当我尝试创建新项目时,我在目标框架的下拉列表中没有看到 .NET Core 7。

我检查了控制面板,它显示:

在此输入图像描述

在此输入图像描述

我已经有了 .NET core 2.1.802,这也显示在 Visual Studio 中。但 .NET 7 未显示。

我是否下载了错误的版本或者此 SDK 不包含 .NET Core。我对此有点困惑。

有人可以向我解释一下吗?

多谢。

.net c# asp.net .net-core visual-studio-2019

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

即使成员在构造函数中初始化,必需的关键字也会导致错误

我有以下代码。创建实例的两行TestClass失败并显示错误。

我预计第一个会失败,因为所需的属性未初始化。但是,第二个调用一个构造函数来初始化所需的属性。为什么那个会失败呢?

什么是属性构造函数

void Main()
{
    TestClass test1 = new(); // <== Error CS9035 Required member 'TestClass.Name' must be set in the object initializer or attribute constructor
    TestClass test2 = new(""); // <== Error CS9035 Required member 'TestClass.Name' must be set in the object initializer or attribute constructor
}

class TestClass
{
    public required string Name { get; set; }
    
    public TestClass()
    {
        
    }
    
    public TestClass(string name)
    {
        Name = name;
    }
}
Run Code Online (Sandbox Code Playgroud)

c# .net-core

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