Unity中使用Azure.Data.Tables无法初始化TableClient/TableServiceClient
问题根因
报错由Unity运行环境的局限性导致:Unity内置的System.Net.Http.HttpClientHandler未实现MaxConnectionsPerServer属性,而Azure.Core库初始化默认HTTP传输管道时会调用该属性,因此触发NotImplementedException,该问题和你选择的认证方式无关。
可落地解决方案
- 方案1:自定义HTTP传输实现,绕过SDK默认的初始化逻辑
自定义继承自HttpClientTransport的传输类,直接传入自行构造的HttpClient,规避SDK内部对MaxConnectionsPerServer的调用:
初始化客户端时传入配置了自定义传输的using System.Net.Http; using Azure.Core.Pipeline; public class CustomUnityHttpTransport : HttpClientTransport { public CustomUnityHttpTransport() : base(new HttpClient(new HttpClientHandler())) { // 直接传入手动构造的HttpClient,不走SDK默认的CreateDefaultClient逻辑 } }TableClientOptions即可:var tableOptions = new TableClientOptions(); tableOptions.Transport = new CustomUnityHttpTransport(); // 初始化TableClient var client = new TableClient(connectionString, tableName, tableOptions); // 初始化TableServiceClient同理 var serviceClient = new TableServiceClient(connectionString, tableOptions); - 方案2:调整Unity项目配置
如果你使用的是Unity 2021.3及以上版本,可以通过修改运行配置适配SDK:- 打开
Edit > Project Settings > Player - 进入
Other Settings > Configuration面板 - 将
Api Compatibility Level修改为.NET 6 - 将
Http Implementation修改为Managed HttpClient
重新打包运行即可解决该问题。
- 打开
- 方案3:降级SDK版本
如果上述方案都不适用,可以降级使用旧版Azure存储表服务SDKWindowsAzure.Storage9.3.3版本,该版本兼容Unity旧版运行环境。
内容的提问来源于stack exchange,提问作者yukun
相关产品推荐
相关产品推荐

