小编LPQ*_*LPQ的帖子

IServiceCollection 不包含 AddAzureClients 的定义

我正在尝试添加用于依赖项注入的 blob 服务客户端。我正在使用最新版本的Microsoft.Extensions.Azure,但是我的服务集合不包含 的扩展方法AddAzureClients。服务集合的类型为Microsoft.Extensions.DependencyInjection.IServiceCollection

通过在线研究,我还没有真正找到任何关于这个问题的信息。我不确定我在这里做错了什么。可能我缺少一些非常简单的东西!

using Microsoft.Extensions.Azure;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;

namespace MY.API
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddAzureClients(builder => // IServiceCollection does not contain a definition for AddAzureClients
            {
                builder.AddBlobServiceClient(Configuration.GetConnectionString("BlobStorage"));
            });
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# azure .net-6.0

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

HttpClient 似乎忽略了 Timeout 属性

MultiPartContent我试图通过返回响应来从服务器加载大量数据。但是,在该HttpGet方法期间,我设置的超时值将被忽略。我正在尝试设置更长的超时,因为在这种情况下等待是可以的。

我尝试过 10 分钟到 2 小时之间的各种超时值。实际上,用户第一次使用我们的应用程序时只需等待约 5 分钟,其他时候等待的时间会更少。我还尝试存储 HttpClient 的引用,以确保 api.HttpClient 不会每次都重新创建 HttpClient 对象。

var handler = new HttpClientHandler();
var progress = new ProgressMessageHandler(handler);
var api = APIHelpers.GetSession(progress);

progress.HttpReceiveProgress += (e, args) => ProgressChanged.Invoke(e, new SyncEventArgs(GlobalEnums.SyncStage.Downloading, args.ProgressPercentage * 0.01f));

api.HttpClient.Timeout = new TimeSpan(0, 10, 0);

var downloadUri = BuildURI();
var response = await api.HttpClient.GetAsync(downloadUri, HttpCompletionOption.ResponseHeadersRead);
Run Code Online (Sandbox Code Playgroud)

我希望应用程序在抛出超时异常之前等待 10 分钟,但异常是在 100 秒后抛出的(我相信这是默认值?)。设置后检查该HttpClient.Timeout值确实表明它设置正确。

APIHelpers.GetSession()方法返回一个带有创建的授权标头的 API 对象。该HttpClient对象可通过继承的类访问。这是由 Swashbuckle 和 Swagger 创建的。我api.HttpClient.Timeout = x之前已经成功使用过这种方式,所以我认为这不是问题。它似乎特别针对这种情况。 …

.net c# httpclient xamarin

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

标签 统计

c# ×2

.net ×1

.net-6.0 ×1

azure ×1

httpclient ×1

xamarin ×1