小编Sib*_*Guy的帖子

保持同步和异步实现

维护方法的同步和异步版本的最佳实践是什么?

Let's suppose we have the following method:
public ImportData Import(ZipFile zipFile)
{
  ... //Step 1. Initialization
  var extractedZipContent = zipFile.Extract(); //Step 2
  ... //Step 3. Some intermediate stuff
  var parsedData = ParseExtractedZipContent(extractedZipContent); //Step 4
  ... //Step 5. Some code afterwards
}
Run Code Online (Sandbox Code Playgroud)

第2步和第4步是长时间运行的,所以我们想在异步版本的Import方法中异步调用它们:

public async Task<ImportData> ImportAsync(ZipFile zipFile)
{
  ... //Step 1. Initialization
  var extractedZipContent = await zipFile.Extract(); //Step 2
  ... //Step 3. Some intermediate stuff
  var parsedData = await ParseExtractedZipContentAsync(extractedZipContent); //Step 4
  ... //Step 5. Some code afterwards
} …
Run Code Online (Sandbox Code Playgroud)

.net c# async-await

4
推荐指数
1
解决办法
652
查看次数

如何解析UTC中的日期时间?

我有一个像这样的字符串"10/14/2014 5:30:00 AM"。我需要将其解析为UTC字符串。但是当我执行moment.utc("10/14/2014 5:30:00 AM").format()死刑"2014-10-13T22:30:00+00:00"时,我会得到期望的"2014-10-14T12:30:00+00:00"

如何使momentJS相信我的字符串为UTC字符串并解析它而不会根据本地时区(在我的情况下为+7)来改变时间?

momentjs

4
推荐指数
2
解决办法
7376
查看次数

仅在执行上一个作业后才执行作业

我有一份计划每分钟执行的工作:

        var trigger = TriggerBuilder.Create().
            StartNow().
            WithSimpleSchedule(x => x.WithIntervalInMinutes(1).RepeatForever()).
            Build();
Run Code Online (Sandbox Code Playgroud)

但有时需要执行超过一分钟的工作.因此,下一个工作将开始,直到上一个完成,并导致一些冲突.

是否有可能告诉Quartz.Net计划每分钟运行一个作业,但前提是前一个作业已经完成?

quartz.net

4
推荐指数
1
解决办法
2758
查看次数

SignalR长轮询在5秒内断开

我的应用程序在公司网络(丑陋的代理和东西)下工作.它不能很好地工作.我希望使用https会有所帮助,但事实并非如此.这是我在日志中看到的一种奇怪的模式:

[14:13:32 GMT+0600 (N. Central Asia Standard Time)] SignalR: Client subscribed to hub 'modemshub'.
[14:13:32 GMT+0600 (N. Central Asia Standard Time)] SignalR: Negotiating with '/signalr/negotiate?clientProtocol=1.5&connectionToken=6aktO0sramoQKhQ9DC7Cs7EbXMUou8LooQRxfup4R0oZCHpBmWBFjyLup%2F3wJLloR8GtJEiUk10YOZJBaSqN8aiGAfXRR4G9hujTFTyiJiz%2FyJ4oMlBIdxqeCc5anI6k&connectionData=%5B%7B%22name%22%3A%22modemshub%22%7D%5D'.
[14:13:32 GMT+0600 (N. Central Asia Standard Time)] SignalR: longPolling transport starting.
[14:13:32 GMT+0600 (N. Central Asia Standard Time)] SignalR: Opening long polling request to 'https://example.com/signalr/connect?transport=longPolling&clientProt…rlCzGHl5kVLClT5ex8&connectionData=%5B%7B%22name%22%3A%22modemshub%22%7D%5D'.
[14:13:33 GMT+0600 (N. Central Asia Standard Time)] SignalR: Long poll complete.
[14:13:33 GMT+0600 (N. Central Asia Standard Time)] SignalR: LongPolling connected.
[14:13:33 GMT+0600 (N. Central Asia Standard Time)] SignalR: longPolling …
Run Code Online (Sandbox Code Playgroud)

.net asp.net-mvc signalr

4
推荐指数
2
解决办法
4678
查看次数

Project.json工具应该去哪里?

我正在逐步遵循实体框架核心说明.在某些时候,它说

找到工具部分并添加Microsoft.EntityFrameworkCore.Tools.DotNet包,如下所示

project.json:

"tools": {
   "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0-preview3-final",
   "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
   "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
 },
Run Code Online (Sandbox Code Playgroud)

据我所知,project.json现在已经不见了.那么我应该在哪里添加这个值呢?项目文件?

.net nuget entity-framework-core .net-core

4
推荐指数
1
解决办法
816
查看次数

在Startup外添加服务

有没有办法在Startup类之外添加服务.换句话说,我们可以在Startup之外访问当前请求的ServiceCollection吗?

当你有一个创建子容器的工厂,根据输入参数(即Web Api的情况下的查询参数)注册附加服务然后解析特定服务时,IoC中有一个典型的场景.我曾经使用的每个IoC工具都支持这个工作流程,但是我没有看到通过ASP.NET Core Dependency Injection实现这一目的的方法.似乎我可以找到的每个示例都在Startup类中添加了服务.

.net asp.net-core

4
推荐指数
1
解决办法
1799
查看次数

适用于iframe和api的OAuth 2身份验证

我正在将几个网站/服务集成到我的应用程序中。我使用iframe(或Vue Electron的Webview)进行UI集成,也使用API​​来实现这些服务之间的交叉通信。

目前,我必须为每种服务进行两次OAuth 2身份验证:一次是iframe中自然身份验证的一部分,另一次是当我要求用户向我提供此服务的访问权限时(出于api原因)。

有什么方法可以简化此过程?

authentication oauth oauth-2.0 google-oauth

4
推荐指数
1
解决办法
2750
查看次数

如何将授权委派给外部Auth 2.0服务

我正在开发一种服务,提供支持的不同服务的智能(希望)集成OAuth 2.0.我们的工具的重点是团队工作流程的改进,所以我们结合Slack,GitHub,Asana(问题跟踪),Cezanne(HR工具)等.

我们有ui和后端可以使用所有这些工具(用户被授权给所有这些工具,所以我需要访问和刷新令牌).我们需要能够隐藏ui的不同部分,具体取决于人在特定工具中的角色.我们GitHub以此为例.用户可以是存储库所有者,贡献者,公司所有者(用于企业帐户)等,因此这些用户可能需要基于其权限的不同UI.

最初我犹豫不决地自己实施授权(另一个自定义授权系统是这个世界需要的最后一件事),我想利用其他服务的授权机制,只是围绕它们创建一个轻量级的包装器.起初这似乎是一个合理的想法,但我无法弄清楚如何实现它,谷歌没有给出有价值的建议,这意味着:99.99%我正在尝试做一些愚蠢的事情,00.01%我正在尝试做一些罕见的/创新的.

我希望利用OAuth 2.0它,但它似乎不支持我们需要的东西.最接近的是范围,但它与我们的场景看起来并不相关.

我现在唯一的想法是创建我们自己的授权系统,并使用逆向工程集成其他服务.因此,我会使用API​​请求用户的GitHub帐户详细信息,并在我们的系统中适当地应用他的角色:存储库A的所有者,存储库B的贡献者,公司C的所有者等.我将必须对每个角色的权限进行反向工程(即存储库所有者无法更改公司名称).我们必须为每项服务保留用户角色:因此,而不是典型的管理员/用户/经理/等.我们将得到:OwnerOfGitHubRepository(对于repositoryA),ManagerOfAsanaTeam(对于团队B)等.

如果OAuth 2.0服务具有可返回当前用户可用权限的端点,那将是非常棒的.

我不是安全工程师,所以我可能会遗漏一些明显的东西.因此,在投资上述实施之前,想先问你们的建议.

oauth oauth-2.0 asana asana-api identityserver4

4
推荐指数
1
解决办法
163
查看次数

Html是渲染事件

我正在使用jQuery AJAX调用向我的页面添加一些代码.此代码是html和javascript的混合.但我希望只有在html部分准备就绪时才能执行javascript.但是当渲染附加的html时会引发什么事件?

这是一个例子:

<table id="sampleTable">
   ...
</table>

<script>
  // this code should be executed only when sampleTable is rendered
  $('#sampleTable').hide();
</script>
Run Code Online (Sandbox Code Playgroud)

javascript jquery

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

C#ref/out参数与懒惰

我有一个方法,它有几个"out"参数.它们在函数内部应该设置为值.但在某些情况下,编译器不够聪明,并且在任何执行路径中都没有设置参数值.这就是我必须在方法开头将默认值设置为out参数的原因.但由于此方法是具有多个实现的接口的一部分,因此该初始化代码是重复的.我不喜欢它.

您看到哪些选项可以解决此问题?我看到的一个选项是使用ref而不是out.它在概念上并不正确,因为它不保证在方法内设置参数值.但事实上它是相同的(因为我在函数的开头设置了默认值,这意味着在这种情况下不保证在方法内设置实际值).

还有其他选择吗?

.net c#

3
推荐指数
2
解决办法
808
查看次数