小编fin*_*s10的帖子

MediatR IPipelineBehavior<TRequest, TResponse> 错误为类型“TRequest”不能用作泛型类型或方法中的类型参数“TRequest”

我正在使用MediatR在我的应用程序中进行请求-响应日志记录IPipelineBehavior<TRequest, TResponse>

代码示例:

internal sealed class AppLoggingBehavior<TRequest, TResponse> : IPipelineBehavior<TRequest, TResponse>
{
    private readonly ILogger<AppLoggingBehavior<TRequest, TResponse>> _logger;

    public AppLoggingBehavior(ILogger<AppLoggingBehavior<TRequest, TResponse>> logger)
    {
        _logger = logger;
    }

    public async Task<TResponse> Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate<TResponse> next)
    {
        string requestName = typeof(TRequest).Name;
        string unqiueId = Guid.NewGuid().ToString();
        string requestJson = JsonSerializer.Serialize(request);
        _logger.LogInformation($"Begin Request Id:{unqiueId}, request name:{requestName}, request json:{requestJson}");
        var timer = new Stopwatch();
        timer.Start();
        var response = await next();
        timer.Stop();
        _logger.LogInformation($"End Request Id:{unqiueId}, request name:{requestName}, total request time:{timer.ElapsedMilliseconds}ms");
        return response; …
Run Code Online (Sandbox Code Playgroud)

.net c# mediatr

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

在 ConfigureServices() 中两次添加 AddMvc() 服务是 Asp.Net Core 中的一个好习惯吗?

我正在为 Asp.Net Core 创建一个 Nuget 包。我想让配置变得简单。所以我决定采用一种流畅的方式将我的 Nuget 添加到ConfigureServices()Asp.Net Core 中的服务集合中。

这是我打算做的:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc(options => options....);

    services.AddMyNugetPackageName();
}
Run Code Online (Sandbox Code Playgroud)

在我的AddMyNugetPackageName()方法里面,

public static IServiceCollection AddMyNugetPackageName(this IServiceCollection services)
{
    services
        .AddMvc(options => options.ModelBinderProviders.Insert(0, new MyModelBinderProvider()))
        .AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());

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

所以现在如果人们开始使用我的 Nuget 包,AddMvc()我的内部会AddMyNugetPackageName()替换AddMvc()他们的ConfigureServices()? 这会给最终用户带来什么麻烦吗?

如果这将取代AddMvc()他们的用户,ConfigureServices()那么最好的方法是什么或如何处理?

c# service configure nuget asp.net-core-mvc

12
推荐指数
1
解决办法
1918
查看次数

Nuget 包图标未显示

我正在开发一个 Nuget 包。我已经icon.png放在里面Images的文件夹我的包里面的代码。在我的.csproj文件中,我添加了与图标相关的必需标签。但仍然没有显示图标。Nuget 中显示的是默认的蓝色图标。

这是我的.csproj文件,

<PropertyGroup>
    <PackageIcon>icon.png</PackageIcon>
</PropertyGroup>

<ItemGroup>
    <None Include="Images\icon.png" Pack="true" PackagePath=""/>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?请协助。

nuget nuget-package

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

Moq-不可覆盖的成员不得在设置/验证表达式中使用

我是Moq的新手。我在嘲笑一PagingOptions堂课。这是该类的样子:

public class PagingOptions
    {
        [Range(1, 99999, ErrorMessage = "Offset must be greater than 0.")]
        public int? Offset { get; set; }

        [Range(1, 100, ErrorMessage = "Limit must be greater than 0 and less than 100.")]
        public int? Limit { get; set; }

        public PagingOptions Replace(PagingOptions newer)
        {
            return new PagingOptions
            {
                Offset = newer.Offset ?? Offset,
                Limit = newer.Limit ?? Limit
            };
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是我的模拟课程,

var mockPagingOptions = new Mock<PagingOptions>();
            mockPagingOptions.Setup(po => po.Limit).Returns(25);
            mockPagingOptions.Setup(po => po.Offset).Returns(0);
Run Code Online (Sandbox Code Playgroud)

设置属性值时出现以下错误。我在做错什么吗?看起来我无法Moq具体课程吗?只能模拟接口吗?请协助。 …

c# moq

9
推荐指数
4
解决办法
7718
查看次数

Visual Studio升级到16.10.0后拒绝加载_framework/aspnetcore-browser-refresh.js

我正在做.net 5 blazor wasm项目。我最近更新了Visual Studio 2019版本16.10.0。突然间,我的浏览器(Google Chrome)开始收到一条错误消息,console如下所示:

拒绝加载脚本“https://localhost:44340/_framework/aspnetcore-browser-refresh.js”,因为它违反了以下内容安全策略指令:“script-src 'sha256-fa5rxHhZ799izGRP38+h4ud5QXNT0SFaFlh4eqDumBI='”。请注意,“script-src-elem”未明确设置,因此“script-src”用作后备。

我没有_framework/aspnetcore-browser-refresh.js添加到我的index.html添加。这是我的脚本和样式声明index.html

styles内部声明<head>index.html

<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
    <title>App</title>
    <base href="/" />
    <link href="css/site.css" rel="stylesheet" />
    <link href="Web.styles.css" rel="stylesheet">
    <link href="_content/BlazorDateRangePicker/daterangepicker.min.css" rel="stylesheet" />
    <link href="manifest.json" rel="manifest" />
    <link rel="apple-touch-icon" sizes="512x512" href="icon-512.png" />
</head>
Run Code Online (Sandbox Code Playgroud)

scriptsindex.html

<script src="_content/Microsoft.AspNetCore.Components.WebAssembly.Authentication/AuthenticationService.js"></script>
<script src="_framework/blazor.webassembly.js"></script>
<script src="js/Chart.js"></script>
<script src="js/print.js"></script>
<script src="js/pdf.js"></script>
<script …
Run Code Online (Sandbox Code Playgroud)

content-security-policy asp.net-core blazor visual-studio-2019 blazor-webassembly

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

npm 错误!吉普 错误!在安装了 Visual Studio 2022 Enterprise 的 Windows 11 中安装 Node sass 时

npm install node-sass --save-dev我正在尝试安装,windows 11但我得到了这个npm ERR! gyp ERR!

错误详情:

C:\Users\ABCD\source\repos\PageTitleTest\PageTitleTest>npm install node-sass --save-dev
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated uuid@3.4.0: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm ERR! code 1
npm ERR! path C:\Users\ABCD\source\repos\PageTitleTest\PageTitleTest\node_modules\node-sass
npm ERR! command failed
npm ERR! …
Run Code Online (Sandbox Code Playgroud)

windows visual-studio node.js npm visual-studio-2022

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

Blazor WASM 脚本标签不应放置在组件内部,因为它们无法动态更新。将脚本标签移动到index.html文件

我正在开发一个.Net 6 Blazor Wasm应用程序。我需要将其放置<script type="application/ld+json">在每个登陆页面组件中以获得SEO好处。

我已经在使用<HeadContent>添加其他<meta>标签<link>。因此我决定使用相同的组件来实现此目的。

但是,当我将<script>标签放入其中时<HeadContent>,我收到编译错误,如下所示,

脚本标签不应放置在组件内,因为它们无法动态更新。要解决此问题,请将脚本标记移动到“index.html”文件或其他静态位置。

为了解决这个问题,我将脚本标签添加为字符串文本,<HeadContent>如下所示,

@page "/"
@inject NavigationManager NavigationManager

<HeadContent>
   @($@"<script type=""application/ld+json"">
        {{
            ""@context"": ""https://schema.org"",
            ""@type"": ""WebSite"",
            ""publisher"": {{
                ""@type"": ""Organization"",
                ""name"": ""Page Name"",
                ""url"": ""{NavigationManager.BaseUri}"",
                ""logo"": {{
                    ""@type"": ""ImageObject"",
                    ""url"": ""{NavigationManager.BaseUri}favicon.ico"",
                    ""width"": 16,
                    ""height"": 16
                }}
            }},
            ""url"": ""{NavigationManager.BaseUri}"",
            ""mainEntityOfPage"": {{
                ""@type"": ""WebPage"",
                ""@id"": ""{NavigationManager.BaseUri}""
            }},
            ""description"": ""some good description about the page""
        }}
    </script>")
</HeadContent> …
Run Code Online (Sandbox Code Playgroud)

.net asp.net-core blazor blazor-webassembly

8
推荐指数
2
解决办法
6384
查看次数

EF Core 3.1 不允许对 Enum 属性进行 Contains 搜索

enum我正在尝试对我的属性进行包含搜索DbSet,EF Core 3.1 抛出以下错误

无法翻译 LINQ 表达式 'DbSet .Where(d => d.Position.ToString().Contains("acc"))'。以可翻译的形式重写查询,或者通过插入对 AsEnumerable()、AsAsyncEnumerable()、ToList() 或 ToListAsync() 的调用来显式切换到客户端计算

实体:

public class DemoEntity
{
    [Key]
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public Position Position { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

枚举 - 位置:

public enum Position
{
    [Display(Name = "Accountant")]
    Accountant,
    [Display(Name = "Chief Executive Officer (CEO)")]
    ChiefExecutiveOfficer,
    [Display(Name = "Integration Specialist")]
    IntegrationSpecialist,
    [Display(Name = "Junior Technical …
Run Code Online (Sandbox Code Playgroud)

c# enums entity-framework-core entity-framework-core-3.1

7
推荐指数
1
解决办法
2662
查看次数

Microsoft.AspNetCore.Components.Forms.InputDate 需要 EditContext 类型的级联参数

我正在开发一个ASP.NET 5.0 blazor web assembly应用程序。我需要在仪表板屏幕中有一个日期选择器来选择一个日期来显示详细信息。

这是我的代码:

<input class="input" type="month" id="staffPicker" name="staffPicker"
        aria-label="Staff Sales Detail Period"
        @bind="StaffSaleDetailsPeriod"
        max="@DateTime.Now.ToString("yyyy-MM")">
Run Code Online (Sandbox Code Playgroud)

我需要在日期更改时触发 API 调用。所以我尝试添加@onchange到上面的代码中,如下所示。

<input class="input" type="month" id="staffPicker" name="staffPicker"
        aria-label="Staff Sales Detail Period"
        @bind="StaffSaleDetailsPeriod"
        max="@DateTime.Now.ToString("yyyy-MM")"
        @onchange="OnStaffSalePeriodChange">
Run Code Online (Sandbox Code Playgroud)

但这会产生新的错误,如下所示:

该元素使用属性“onchange”两次或多次。属性必须是唯一的(不区分大小写)。属性“onchange”由“@bind”指令属性使用。

所以我尝试将上面的input元素替换<InputDate>为如下所示,

<InputDate class="input is-small"
        ValueExpression="() => StaffSaleDetailsPeriod"
        Value="StaffSaleDetailsPeriod"
        ValueChanged="(DateTime staffSalesPeriod) => OnStaffSalePeriodChange()"
        max="@DateTime.Now.ToString("yyyy-MM")"/>
Run Code Online (Sandbox Code Playgroud)

这会产生运行时错误,如下所示:

EditForm 内的Microsoft.AspNetCore.Components.Forms.InputDate 1[System.DateTime] requires a cascading parameter of type EditContext. For example, you can use Microsoft.AspNetCore.Components.Forms.InputDate1[[System.DateTime, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]

缺少什么或者这<InputDate>不能与 …

asp.net-core asp.net5 blazor blazor-webassembly

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

在 blazor Web 程序集中每秒调用 StateHasChanged() 是最佳选择吗?

我正在开发一个blazor webassembly应用程序。我需要DateTime在我的应用程序中显示当前内容。这是我如何用 pure 实现我的要求C#

@using System.Threading

<p>@CurrentDateTime</p>

@code {
    protected override void OnAfterRender(bool firstRender)
    {
        if (firstRender)
        {
            new Timer(DateTimeCallback, null, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1));
        }
    }

    private void DateTimeCallback(object state)
    {
        CurrentDateTime = DateTimeOffset.UtcNow.ToString("dd MMM yyyy hh:mm:ss tt");
        StateHasChanged();
    }
}
Run Code Online (Sandbox Code Playgroud)

这给出了准确的当前时间并每秒更新一次。但我有点担心StateHasChanged()每秒都打电话。从长远来看,它会影响性能吗?或者我需要回退javascript才能实现此功能?请提出您的意见。

c# asp.net-core blazor blazor-client-side blazor-webassembly

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