运行func host start时ConnectionStringSetting未找到错误求助
解决方案:CS0246 找不到ConnectionStringSetting类型错误
错误原因
编译错误CS0246的核心原因是CosmosDB绑定属性的参数名称错误:在新版Microsoft.Azure.WebJobs.Extensions.CosmosDB包中,指定连接字符串的参数名是ConnectionString,而非你代码中使用的ConnectionStringSetting。
修复步骤
1. 修正绑定参数名称
将两个CosmosDB属性中的ConnectionStringSetting替换为ConnectionString。
2. 修正代码拼写错误
代码中jsonToRetun是拼写错误,改为jsonToReturn;同时建议返回更新后的计数器对象(updatedCounter),确保前端能拿到最新的访问次数。
3. 验证NuGet包版本
确保项目已安装最新稳定版的Microsoft.Azure.WebJobs.Extensions.CosmosDB,可通过以下命令更新:
dotnet add package Microsoft.Azure.WebJobs.Extensions.CosmosDB
修正后的完整代码
using Microsoft.Azure.WebJobs; using Microsoft.Azure.WebJobs.Extensions.Http; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Logging; using Newtonsoft.Json; using System.Net.Http; using System.Text; using Microsoft.Azure.WebJobs.Extensions.CosmosDB; namespace Company.Function { public static class GetResumeCounter { [FunctionName("GetResumeCounter")] public static HttpResponseMessage Run( [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, [CosmosDB(databaseName: "AzureResume", containerName:"Counter", ConnectionString = "AzureResumeConnectionString", Id="1", PartitionKey="1")] Counter counter, [CosmosDB(databaseName: "AzureResume", containerName:"Counter", ConnectionString = "AzureResumeConnectionString", Id="1", PartitionKey="1")] out Counter updatedCounter, ILogger log) { log.LogInformation("C# HTTP trigger function processed a request."); updatedCounter = counter; updatedCounter.Count += 1; var jsonToReturn = JsonConvert.SerializeObject(updatedCounter); return new HttpResponseMessage(System.Net.HttpStatusCode.OK) { Content = new StringContent(jsonToReturn, Encoding.UTF8, "application/json") }; } } // 确保你已定义Counter类(可放在本文件或单独文件中) public class Counter { public string Id { get; set; } public string PartitionKey { get; set; } public int Count { get; set; } } }
额外注意事项
- 确认
local.settings.json中已正确配置连接字符串:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet", "AzureResumeConnectionString": "你的CosmosDB连接字符串" } } - 若问题仍存在,尝试清理并重新构建项目:
dotnet clean dotnet build func host start
内容的提问来源于stack exchange,提问作者kamlesh
相关产品推荐
相关产品推荐

