小编AnK*_*ing的帖子

如何使“发生一个或多个验证错误”引发异常?

我正在 Core 3.1 上运行 WebAPI,我的端点之一(JSON 除外)的模型具有带有[Required]属性的字段,如下所示:

public class Vendor
{
        public int ID { get; set; }
        [Required(ErrorMessage = "UID is required")]   <<<------ required attribute
        public string UID { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

当我在不设置 UID 的情况下调用此端点时,我会按预期获得以下输出:

{
    "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
    "title": "One or more validation errors occurred.",
    "status": 400,
    "traceId": "|7ced8b82-4aa34d65daa99a12.",
    "errors": {
        "Vendor.UID": [
            "UID is required"
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

尽管此输出信息丰富且清晰,但它与我的 API 通过 ExceptionFilter 生成的其他错误输出不一致。有什么方法可以将此错误路由到异常过滤器吗?

这是我的 Startup.cs:

public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration; …
Run Code Online (Sandbox Code Playgroud)

asp.net-core asp.net-core-3.1

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

ASP.NET Core 3.1 HttpClient 只记录警告和错误

我注意到应该在后台运行的应用程序(服务)由于 HttpClient 创建了垃圾日志信息日志,如下所示:

info: System.Net.Http.HttpClient.Default.LogicalHandler[100] 开始处理 HTTP 请求 POST https://localhost:44317/programmatic/getcontent info: System.Net.Http.HttpClient.Default.ClientHandler[100] Sending HTTP请求 POST https://localhost:44317/programmatic/getcontent信息:System.Net.Http.HttpClient.Default.ClientHandler[101] 3027.6345ms 后收到 HTTP 响应 - OK 信息:System.Net.Http.HttpClient.Default.LogicalHandler [101] 3028.2987ms 后结束处理 HTTP 请求 - OK 信息:System.Net.Http.HttpClient.Default.ClientHandler[101] 3052.4709ms 后收到 HTTP 响应 - OK 信息:System.Net.Http.HttpClient.Default.LogicalHandler[ 101] 在 3053.467 毫秒后结束处理 HTTP 请求 - OK

有没有办法在任何地方配置它?

我像这样注入客户端工厂:

serviceCollection.AddHttpClient();
Run Code Online (Sandbox Code Playgroud)

然后像这样创建一个客户端:

HttpClient client = _clientFactory.CreateClient();
Run Code Online (Sandbox Code Playgroud)

asp.net-core asp.net-core-3.1

11
推荐指数
2
解决办法
4475
查看次数

getDisplayMedia() 在 Android 设备上无法正常工作

我需要将用户显示媒体(屏幕截图)连接到 webRTC 应用程序。

以下代码用于启动屏幕捕获:

navigator.mediaDevices.getDisplayMedia({video: true})
Run Code Online (Sandbox Code Playgroud)

这会提示用户有关屏幕捕获的信息,并创建一个视频流,在授予权限后即可使用该视频流。但是我无法让它在 iOS 或 Android 设备上运行。

iPad 我正在测试此功能,但无法找到navigator.mediaDevices.getDisplayMedia - undefined (iOS 13.3)

当我尝试调用 Android 上的 Chrome (v79) 时,它显示以下错误:

DOMException:无效状态

根据此: https: //developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getDisplayMedia 如果代码不是由用户操作启动,则可能会生成错误,但这不应该是问题就我而言,因为代码是这样调用的:

startScreenSharing = event => {
 navigator.mediaDevices.getDisplayMedia({video: true})
}

<Button onClick={this.startScreenSharing} />
Run Code Online (Sandbox Code Playgroud)

事件变量保存有效事件,但我仍然收到“无效状态”错误。

这一定是我所缺少的,因为它在桌面 Chrome 和 Safari 上运行良好。

编辑

我遇到了这个:getDisplayMedia 和屏幕录制的演示,并在此网页上生成了相同的错误。这可能是由于我的硬件设备设置造成的吗?

javascript twilio webrtc reactjs get-display-media

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

ILogger 接口不会将所有内容都记录到事件日志/核心 3.0 中

我正在尝试将我的应用程序输出的任何内容(包括信息消息)记录到事件日志中,但 ILogger 接口只在那里写入警告和上面的内容。

这是我的程序.cs:

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
    .ConfigureLogging((context, logging) =>
    {
        logging.ClearProviders();
        logging.AddConsole();
        logging.AddEventLog(context.Configuration.GetSection("Logging:EventLog").Get<EventLogSettings>());
        logging.SetMinimumLevel(LogLevel.Information);
    });
Run Code Online (Sandbox Code Playgroud)

我的 appsettings.json:

  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Information",
      "Microsoft.Hosting.Lifetime": "Information"
    },
    "EventLog": {
      "LogName": "Application",
      "SourceName": "My cool App"
    }
  }
Run Code Online (Sandbox Code Playgroud)

在我的应用程序中,我执行以下操作:

_logger.LogInformation("test information");
_logger.LogWarning("test warning");
_logger.LogDebug("test debug");
_logger.LogError("test error");
_logger.LogTrace("test trace");
_logger.LogCritical("test critical");
Run Code Online (Sandbox Code Playgroud)

在控制台输出中,我收到了所有测试消息。但是在事件日志中我只得到警告、错误和严重。

我在这里做错了什么?

c# asp.net-core

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

如何在 ASP.NET Core 应用程序中使用位图资源?

我试图在应用程序中使用几个位图资源.netcore2.1,但是当我将图像资源添加到我的项目时,它显示以下错误:

严重性代码说明项目文件行抑制状态错误资源“sign_here_tag”无法实例化。找不到类型 System.Drawing.Bitmap、System.Drawing.Common、Version=4.0.0.1、Culture=neutral、PublicKeyToken=cc7b13ffcd2ddd51。

system.drawing.common的项目中安装了 NuGet 包,但错误仍然出现。

安装 CoreCompat.System.Drawing 后,我仍然出现此错误: 在此输入图像描述

即使我将文件扩展名更改为 wav(以强制将其添加为 MemoryStream),我仍然收到错误: 在此输入图像描述

c# asp.net asp.net-core

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

在 Material-UI 中以编程方式打开 Tooltip

我需要能够向元素添加工具提示,使其功能正常(在元素悬停时打开),同时我需要能够以编程方式打开它。

我知道它有open允许这样做的道具,但在这种情况下,我会将组件从不受控制切换到受控制,这是不可能的。

我也无法:hover在工具提示内的按钮上总结事件,因为这在浏览器中是不可能的。

有没有办法通过参考来实现这一点?当我将 ref 与工具提示一起使用时,它只是传递给子元素。

谢谢!

reactjs material-ui

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

ASP.NET Core - 资产文件没有 .NETCoreApp 3.1 的目标

我正在尝试编译我的应用程序以在 Core 3.0(不是 3.1)上运行

而且我能够在本地编译和运行良好,但是当我进行发布时,它给了我:

错误 NETSDK1005:资产文件“C:\dev...\project.assets.json”没有“.NETCoreApp,Version=v3.1”的目标。确保恢复已运行并且您已在项目的 TargetFrameworks 中包含“netcoreapp3.1”。

但我不想让它在 3.1 上运行,我需要 3.0(为了保持与其他项目的兼容性)

是否有可能找出导致它寻找 3.1 而不是 3.0 的原因?

asp.net-core asp.net-core-3.0

4
推荐指数
5
解决办法
6235
查看次数

鼠标在屏幕左侧Jquery时显示菜单

当鼠标光标距离屏幕左侧20px时,我正在尝试显示左侧菜单.我想让鼠标悬停在菜单上.

这段代码不适合我.

$(document).ready(function(){
    $("#lmenu").hide(300);
    $(document).mousemove(function(e){
        if(e.pageX<20 || $("#lmenu").is(':hover')) $("#lmenu").show(200);//html(e.pageX +', '+ e.pageY);
        else if(!$("#lmenu").is(':hover')) setTimeout(function(){ $("#lmenu").hide(200); }, 2000);
    });
});
Run Code Online (Sandbox Code Playgroud)

jquery drop-down-menu

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

一段时间后隐藏反应工具提示

我正在使用react-tooltip模块(https://www.npmjs.com/package/react-tooltip),

无法弄清楚如何在一定时间(例如 5 秒)后隐藏提示

我试过这个:

<ReactTooltip afterShow={() => { setTimeout(ReactTooltip.hide(), 5000) }} />
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,工具提示甚至不会显示

reactjs

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

在颁发者名称与特定值匹配的集合中查找 X509 证书

在我的应用程序中,我需要能够在本地存储中找到与某个发行者名称匹配的证书。所以,我之前做的是:

LocalStore.Certificates.Find(X509FindType.FindByIssuerName, "My Common Name", True)
Run Code Online (Sandbox Code Playgroud)

但是由于安装了新的证书服务器并使用活动目录,我的证书“颁发者”字段具有附加属性(DC 值)。完整的字符串如下所示:

"CN=My Common Name, DC=MyCompanyDomain, DC=local"
Run Code Online (Sandbox Code Playgroud)

这不会让我像以前一样使用 Find 方法,并且 CN、DC 值的任何组合对我都不起作用。

这是我在 ImmediateWindow 中尝试过的:

?LocalStore.Certificates.Item(0).IssuerName
{System.Security.Cryptography.X509Certificates.X500DistinguishedName}
    Name: "CN=My Common Name, DC=MyCompanyDomain, DC=local"
    Oid: {System.Security.Cryptography.Oid}
    RawData: {Length=85}
    m_distinguishedName: "CN=My Common Name, DC=MyCompanyDomain, DC=local"
    m_oid: {System.Security.Cryptography.Oid}
    m_rawData: {Length=85}
?LocalStore.Certificates.Find(X509FindType.FindBySubjectName, "My Common Name", True).Count 
0
?LocalStore.Certificates.Find(X509FindType.FindByIssuerName, "My Common", True).Count 
0
?LocalStore.Certificates.Find(X509FindType.FindByIssuerDistinguishedName, "My Common Name", True).Count 
0
?LocalStore.Certificates.Find(X509FindType.FindByIssuerDistinguishedName, "My", True).Count 
0
Run Code Online (Sandbox Code Playgroud)

c# iis certificate x509certificate2 x509certificate

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