我遇到了一个我正在努力解决的DataRow问题.
使用OleDbConnection从Excel电子表格中读取数据行.
如果我尝试使用列名从DataRow中选择数据,即使存在数据,它也会返回DBNull.
但它并不那么简单.
datarow.Table.Columns[5].ColumnName返回"我的专栏".
datarow["my column"]返回DBNull.
datarow[5]返回500.
datarow[datarow.Table.Columns[5].ColumnName]返回DBNull.(只是为了确保它不是一个错字!)
我可以使用列号从数据行中选择一些东西,但我不喜欢这样做,因为如果列顺序改变,软件将会中断.
今天我收到了一个Unifi安全网关(USG),它可以作为你的网络的DHCP服务器(事实上,如果没有它作为DHCP服务器,让它正常工作有点棘手!)
Ubiquiti Unifi UI中的DHCP选项不允许您输入域名,但这是一个非常常见的要求.如何实现这一目标?
我发现很多人都在Ubiquiti论坛上问过这个问题,但是没有答案,所以在找到答案并在那里发布答案后,我想我也会在这里分享
我一直在努力解决我附加到 OnTokenValidated 的 Func 没有做它应该做的事情。
经过多次尝试不同的事情后:
services.Configure<MicrosoftIdentityOptions>(options =>
{
options.Events ??= new OpenIdConnectEvents();
options.Events.OnTokenValidated += context =>
{
context.Principal.AddIdentity(new ClaimsIdentity(new List<Claim> {new Claim("Foo", "Bar")}));
return Task.CompletedTask;
};
}
Run Code Online (Sandbox Code Playgroud)
按预期工作,并且将值为“Bar”的声明“Foo”添加到身份中。
但是,一旦我在代码中等待任务并使 func 异步,附加声明就不会添加到登录的身份中:
services.Configure<MicrosoftIdentityOptions>(options =>
{
options.Events ??= new OpenIdConnectEvents();
options.Events.OnTokenValidated += async context =>
{
var someService = context.HttpContext.RequestServices.GetRequiredService<ISomeService>();
var someValue = await someService.SomeMethod();
context.Principal.AddIdentity(new ClaimsIdentity(new List<Claim> {new Claim("Foo", "Bar")}));
};
}
Run Code Online (Sandbox Code Playgroud)
不起作用。需要明确的是,它没有错误,但是在该方法完成后,身份上不存在附加声明......
据我所知,通过消除各种事情,等待导致了它的崩溃,但 OnTokenValidated 的定义是:
Func<TokenValidatedContext,Task> OnTokenValidated
Run Code Online (Sandbox Code Playgroud)
所以似乎期望处理程序是异步的?
更新:2022-02-07 更进一步:
OnTicketReceived = ctx =>
{
throw new AuthenticationException("Sorry, you …Run Code Online (Sandbox Code Playgroud)