Azure文本分析C#代码报错:TextAnalyticsAPI构造函数因保护级别无法访问
解决TextAnalyticsAPI构造函数访问权限问题
问题原因
你碰到的这个错误——TextAnalyticsAPI.TextAnalyticsAPI(param DelegatingHandler[]) is inaccessible due to its protection level,本质是因为你用的旧版Azure Text Analytics SDK已经被微软弃用了。旧的TextAnalyticsAPI类的构造函数被设置为内部访问权限,外部代码根本没法直接实例化它。
具体解决方案
别慌,换成微软现在推荐的新版客户端就能搞定,步骤如下:
更新NuGet包
先把你项目里的Microsoft.Azure.CognitiveServices.Language.TextAnalytics包卸载,安装最新版的Azure.AI.TextAnalyticsNuGet包——这是当前官方维护的SDK版本。替换客户端初始化代码
把原来创建客户端的代码:ITextAnalyticsAPI client = new TextAnalyticsAPI(); client.AzureRegion = AzureRegions.Westus; client.SubscriptionKey = "ENTER KEY HERE";改成新版的初始化方式:
// 记得添加这两个命名空间 using Azure.AI.TextAnalytics; using Azure; // 初始化客户端,替换成你的资源区域和密钥 var client = new TextAnalyticsClient( new Uri("https://westus.api.cognitive.microsoft.com/"), new AzureKeyCredential("你的订阅密钥") );注意把
westus换成你Azure资源所在的实际区域,密钥也填对。调整API调用逻辑
新版SDK的API方法和旧版不一样,得稍微改下调用代码,举几个核心功能的例子:- 语言检测:
Console.WriteLine("===== LANGUAGE EXTRACTION ======"); var docsToDetect = new List<string> { "This is a document written in English.", "Este es un document escrito en Español.", "这是一篇用中文写的文档" }; foreach (var doc in docsToDetect) { var langResult = client.DetectLanguage(doc); Console.WriteLine($"文档内容: {doc} , 识别语言: {langResult.Value.Name}"); } - 关键词提取:用
ExtractKeyPhrases方法,传入文本即可获取关键词列表 - 情感分析:用
AnalyzeSentiment方法,返回的结果里包含情感分数和标签
- 语言检测:
补充说明
微软更新SDK是为了统一Azure服务的开发体验,新版的TextAnalyticsClient支持异步操作、更完善的错误处理,还符合Azure SDK的统一规范,比旧版好用多了。
内容的提问来源于stack exchange,提问作者nam
相关产品推荐
相关产品推荐

