【发布时间】:2019-09-20 15:28:54
【问题描述】:
我正在尝试将我的 Azure HTTP 函数从 Visual Studio Code 发布到我们的 Azure 平台。
代码在本地运行该函数并成功发布,但发布时抛出以下错误。
我尝试使用 DocumentDB 代替 CosmosDB,但它缺少将数据插入 CosmosDB 所需的插入功能。 Stackoverflow 没有针对这个特定问题的解决方案。
功能代码
//write to cosmosdb
[FunctionName("InsertItem")]
public static HttpResponseMessage Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)]HttpRequestMessage req,
[CosmosDB(
databaseName: "ToDoList",
collectionName: "RFIDContainer",
ConnectionStringSetting = "myCosmosDBConnection")]
out RFIDBaseTag document,
ILogger log)
{
string hexData = "";
string afi = "";
string eid = "";
string dsfid = "";
//Guid DeviceID = new Guid();
//Guid AppID = new Guid();
var content = req.Content;
string jsonContent = content.ReadAsStringAsync().Result;
dynamic json = JsonConvert.DeserializeObject<MyClass>(jsonContent);
hexData = json?.hexData;
afi = json?.afi;
eid = json?.eid;
dsfid = json?.dsfid;
/*Guid devGuid;
Guid.TryParse(json.AppID.ToString(), out devGuid);
DeviceID = devGuid;
Guid appGuid;
Guid.TryParse(json.AppID.ToString(), out appGuid);
AppID = appGuid;*/
byte[] hexToByte = AzureRFIDTagReader.StringToByteArray(hexData);
RawRFIDReading raw = new RawRFIDReading();
raw.afi = afi;
raw.eid = eid;
raw.dsfid = dsfid;
raw.RawData = hexToByte;
RFIDBaseTag rtag = RFIDTagFactory.GetTag(raw);
string serializedtag = JsonConvert.SerializeObject(rtag);
//document = JsonConvert.DeserializeObject<MyClass>(jsonContent);
//document = JsonConvert.DeserializeObject<RFIDBaseTag(serializedtag);
document = rtag;
log.LogInformation($"C# Queue trigger function inserted one row");
return new HttpResponseMessage(HttpStatusCode.Created);
}
local.settings.json
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=xxxx;AccountKey=zzzz",
"myCosmosDBConnection": "AccountEndpoint=xxx:443/;AccountKey=www;"
}
}
错误信息:
函数 (xxx/InsertItem) 错误:Microsoft.Azure.WebJobs.Host:错误索引方法“InsertItem”。 Microsoft.Azure.WebJobs.Host:无法解析属性“CosmosDBAttribute.ConnectionStringSetting”的值。确保设置存在且具有有效值。
我可以在本地发布到函数,但不能在 Azure 上发布。
有什么建议吗?
【问题讨论】:
-
您是否将连接字符串设置添加到函数应用程序?
-
根据@Matias 的回答,
local.settings.json不会发布到 Azure(如文件名所示)。 Here's one way 在函数部署到 Azure 后替换您的“真实”Azure 部署设置。
标签: c# azure azure-cosmosdb