小编Anu*_*nup的帖子

Azure无法将事务封送到弹性事务的传播令牌中(Works for MSDTC)

在windows azure中,我们托管了两个asp.net webapi项目作为app服务.我们需要在这里启用分布式事务.我们在一个api内启动交易.然后在该事务范围内,我们获取该事务的传播令牌,并在另一个api调用期间将其作为头发送.代码就像波纹管.

[HttpGet]
[Route("api/Test/Transaction/Commit")]
public async Task<string> Commit()
{
    using (var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions
    {
        IsolationLevel = IsolationLevel.ReadCommitted
    },
    TransactionScopeAsyncFlowOption.Enabled))
    {
        // cross app domain call
        using (var client = new HttpClient())
        {
            using (var request = new HttpRequestMessage(HttpMethod.Get, ConfigurationManager.AppSettings["IdentityServerUri"] + "api/Test/Transaction/NoCommit"))
            {
                // forward transaction token
                request.AddTransactionPropagationToken();
                var response = await client.SendAsync(request);
                response.EnsureSuccessStatusCode();
            }
        }
        this.Repository.Insert(new Currency { Ccy = "x", IsoCode = "XIS", Name = "XYZ", CurrencyId = 9 });
        await this.Repository.SaveChangesAsync();

        scope.Complete();
        return …
Run Code Online (Sandbox Code Playgroud)

msdtc transactions transactionscope distributed-transactions azure

7
推荐指数
1
解决办法
155
查看次数

npm test -- --coverage never exits

I am using create-react-app to create a react application. When I executes npm test -- --coverage the test never exists. npm test actually runs react-scripts test. Any Idea?

在此处输入图片说明

continuous-integration frontend unit-testing node.js reactjs

6
推荐指数
3
解决办法
3376
查看次数

在 Firebase 中添加自定义 Oauth2 提供程序

我们正在创建一个应用程序并使用 firebase 身份验证。我们的组织中有一个现有的 oauth2 提供程序。是否可以在 firebase 中添加此自定义提供程序?所以我们将在我们的身份提供者中添加一个新客户端并配置 firebase 以便它可以接受来自它的令牌。

custom-authentication oauth-2.0 firebase

5
推荐指数
0
解决办法
88
查看次数

尽管它在线程池中有足够的线程,但请求仍在Azure AppService中排队

我已经使用asp.net webapi编写了一个api,并将其作为Appservice部署为Azure。我的控制器的名称为TestController,我的操作方法如下。

    [Route("Test/Get")]
    public string Get()
    {
        Thread.Sleep(10000);
        return "value";
    }
Run Code Online (Sandbox Code Playgroud)

因此,对于每个请求,它都应等待10秒钟,然后返回字符串“ value”。我还编写了另一个端点,以查看线程池中用于执行请求的线程数。这个动作就像是在吼叫。

    [Route("Test/ThreadInfo")]
    public ThreadPoolInfo Get()
    {
        int availableWorker, availableIO;
        int maxWorker, maxIO;

        ThreadPool.GetAvailableThreads(out availableWorker, out availableIO);
        ThreadPool.GetMaxThreads(out maxWorker, out maxIO);

        return new ThreadPoolInfo
        {
            AvailableWorkerThreads = availableWorker,
            MaxWorkerThreads = maxWorker,
            OccupiedThreads = maxWorker - availableWorker
        };
    }
Run Code Online (Sandbox Code Playgroud)

现在,当我们同时向Test / Get端点发出29个get调用时,几乎需要11秒钟才能成功获得所有请求。因此,服务器在11个线程中同时执行所有请求。要查看线程状态,请在调用Test / Get之后立即调用Test / ThreadInfo返回(无需等待){{“ AvailableWorkerThreads”:8161,“ MaxWorkerThreads”:8191,“ OccupiedThreads”:30}

似乎有29个线程正在执行测试/获取请求,有1个线程正在执行Test / ThreadInfo请求。

当我拨打60次Test / Get的get呼叫时,需要大约36秒钟才能成功。调用Test / ThreadInfo(花费一些时间)会返回{“” AvailableWorkerThreads“:8161,” MaxWorkerThreads“:8191,” OccupiedThreads“:30}

如果我们增加请求数量,则OccupiedThreads的值将增加。就像处理1000个请求一样,它需要2分22秒,而OccupiedThreads的值为129。

尽管在WorkerThread中有很多线程可用,但似乎在30个并发调用后请求和排队。逐渐地,它增加了用于并发执行的线程,但这还不够(对于1000个请求,为129个)。

由于我们的服务有很多IO调用(其中一些是外部api调用,有些是数据库查询),因此延迟也很高。由于我们使用所有IO调用异步方式,因此服务器可以同时处理大量请求,但是当处理器进行实际工作时,我们需要更多的并发性。我们正在将S2服务计划用于一个实例。增加实例将增加并发性,但是我们需要从单个实例中获得更多的并发性。

在阅读了IIS上的一些博客和文档后,我们看到有一个设置minFreeThreads。如果线程池中的可用线程数下降,则此设置的值IIS开始将请求排队。appservice中有这样的东西吗?而且是否真的有可能从azure应用服务中获得更多的并发性,或者我们在那里缺少一些配置?

c# iis azure threadpool asp.net-web-api2

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

如何在Azure Key Vault中存储公共证书(.cer文件)

如何在天蓝色的密钥库中上载或存储公共密钥(.cer)文件。从keyvault面板,当我尝试上载适用于.pfx文件的任何.cer文件时,它给出了错误。

azure-keyvault

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