TARGET:执行Azure功能教程并复制代码,但在VS2017上本地执行时遇到了一些错误。我感谢你的帮助。
https://www.cyotek.com/blog/upload-data-to-blob-storage-with-azure-functions
错误1 - 与Run
:
CS0116命名空间不能直接包含字段或方法等成员UploadToBlobFunctionApp C:\ AzureFunctions \ UploadToBlobFunctionApp \ UploadToBlobFunctionApp \ UploadToBlobFunction.cs 15 Active
错误2 - 与Task CreateBlob
:
CS0116命名空间不能直接包含诸如字段或方法UploadToBlobFunctionApp之类的成员 C:\ AzureFunctions \ UploadToBlobFunctionApp \ UploadToBlobFunctionApp \ UploadToBlobFunction.cs 45 Active
错误3 - 与await CreateBlob
相关:
CS0103名称' CreateBlob'当前上下文中不存在UploadToBlobFunctionApp C:\ AzureFunctions \ UploadToBlobFunctionApp \ UploadToBlobFunctionApp \ UploadToBlobFunction.cs 36活动
代码Function.cs
:
using System;
using System.Configuration;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Azure;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
HttpStatusCode result;
string contentType;
result = HttpStatusCode.BadRequest;
contentType = req.Content.Headers?.ContentType?.MediaType;
if (contentType == "application/json")
{
string body;
body = await req.Content.ReadAsStringAsync();
if (!string.IsNullOrEmpty(body))
{
string name;
name = Guid.NewGuid().ToString("n");
await CreateBlob(name + ".json", body, log);
result = HttpStatusCode.OK;
}
}
return req.CreateResponse(result, string.Empty);
}
private async static Task CreateBlob(string name, string data,
TraceWriter log)
{
string accessKey;
string accountName;
string connectionString;
CloudStorageAccount storageAccount;
CloudBlobClient client;
CloudBlobContainer container;
CloudBlockBlob blob;
accessKey = "qwertyw4VhRajxlZn9C4hTMB8oSwE4klNUsvTy9VeTCIQ11111vFVVGExDwJ+JUboFv2B79j+W6foqLWE92w==";
accountName = "mystorage";
connectionString = "DefaultEndpointsProtocol=https;AccountName=" + accountName + ";AccountKey=" + accessKey + ";EndpointSuffix=core.windows.net";
storageAccount = CloudStorageAccount.Parse(connectionString);
client = storageAccount.CreateCloudBlobClient();
container = client.GetContainerReference("functionupload");
await container.CreateIfNotExistsAsync();
blob = container.GetBlockBlobReference(name);
blob.Properties.ContentType = "application/json";
using (Stream stream = new MemoryStream(Encoding.UTF8.GetBytes(data)))
{
await blob.UploadFromStreamAsync(stream);
}
}
答案 0 :(得分:0)
您正在引用的示例是使用脚本函数(csx
文件)。它们主要用于直接在Azure门户中编辑代码。
我认为您正在尝试使用csproj
和cs
文件创建预编译的应用程序。在这种情况下,您的代码应该是有效的C#,即所有方法都应该在类中。
查看this example。
您还可以使用属性来标记您的功能和触发器,而不是手动创作function.json
,请参阅示例here。