我正在 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) 我注意到应该在后台运行的应用程序(服务)由于 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) 我需要将用户显示媒体(屏幕截图)连接到 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 和屏幕录制的演示,并在此网页上生成了相同的错误。这可能是由于我的硬件设备设置造成的吗?
我正在尝试将我的应用程序输出的任何内容(包括信息消息)记录到事件日志中,但 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)
在控制台输出中,我收到了所有测试消息。但是在事件日志中我只得到警告、错误和严重。
我在这里做错了什么?
我需要能够向元素添加工具提示,使其功能正常(在元素悬停时打开),同时我需要能够以编程方式打开它。
我知道它有open允许这样做的道具,但在这种情况下,我会将组件从不受控制切换到受控制,这是不可能的。
我也无法:hover在工具提示内的按钮上总结事件,因为这在浏览器中是不可能的。
有没有办法通过参考来实现这一点?当我将 ref 与工具提示一起使用时,它只是传递给子元素。
谢谢!
我正在尝试编译我的应用程序以在 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 的原因?
当鼠标光标距离屏幕左侧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) 我正在使用react-tooltip模块(https://www.npmjs.com/package/react-tooltip),
无法弄清楚如何在一定时间(例如 5 秒)后隐藏提示
我试过这个:
<ReactTooltip afterShow={() => { setTimeout(ReactTooltip.hide(), 5000) }} />
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,工具提示甚至不会显示
在我的应用程序中,我需要能够在本地存储中找到与某个发行者名称匹配的证书。所以,我之前做的是:
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) asp.net-core ×5
c# ×3
reactjs ×3
asp.net ×1
certificate ×1
iis ×1
javascript ×1
jquery ×1
material-ui ×1
twilio ×1
webrtc ×1