我正在使用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) 我正在为 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()
那么最好的方法是什么或如何处理?
我正在开发一个 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)
我错过了什么吗?请协助。
我是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具体课程吗?只能模拟接口吗?请协助。 …
我正在做.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)
scripts
在index.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
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) 我正在开发一个.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) 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) 我正在开发一个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.InputDate
1[[System.DateTime, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]
缺少什么或者这<InputDate>
不能与 …
我正在开发一个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