代码之家  ›  专栏  ›  技术社区  ›  Don Sartain

找不到类型或命名空间“blobattribute”

  •  1
  • Don Sartain  · 技术社区  · 6 年前

    我在遵循一个多元化的教程,它有点过时,所以我正在努力填补空白。它说使用一个blobattribute来设置文件名,但是我总是得到一个错误,说没有找到类型或名称空间。

    我在使用CSX,但我一辈子都不能让它工作。当我将该行复制到C测试功能应用程序中时,它工作得很好。我现在不想切换到那个路线,因为它不是教程的一部分,我正试图坚持他们的流程,但他们也没有解释这一点。使用语句的microsoft.azure.webjobs主要是我在尝试让它工作。

    有什么办法让blobattribute在CSX中工作吗?

    #r "Newtonsoft.Json"
    #r "Microsoft.Azure.WebJobs"
    #r "Microsoft.Azure.WebJobs.Extensions"
    
    using System;
    using Newtonsoft.Json;
    using Microsoft.Azure.WebJobs;
    using Microsoft.Azure.WebJobs.Extensions;
    
    public class Order
    {
    public string OrderID {get;set;}
    public string ProductID {get;set;}
    public string Email{get;set;}
    public decimal Price {get;set;}
    }
    
    public static void Run(Order myQueueItem, ILogger log, IBinder binder)
    {    
    log.LogInformation($"C# Queue trigger function processed: 
    {myQueueItem.OrderID}");
    
    using(var outputBlob = binder.Bind<TextWriter>(new BlobAttribute($"{myQueueItem.OrderID}.lic")))    
    {
        outputBlob.WriteLine($"OrderID: {myQueueItem.OrderID}");
        outputBlob.WriteLine($"ProductID: {myQueueItem.ProductID}");
        outputBlob.WriteLine($"Email: {myQueueItem.Email}");
        outputBlob.WriteLine($"Price: {myQueueItem.Price}");
        outputBlob.WriteLine($"Purchase Date: {DateTime.UtcNow}");
    
        var md5 = System.Security.Cryptography.MD5.Create();
        var hash = md5.ComputeHash(System.Text.Encoding.UTF8.GetBytes(myQueueItem.Email + "secret"));
        outputBlob.WriteLine($"Secret Code: 
    {BitConverter.ToString(hash).Replace("-","")}");
        }
    }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Jerry Liu Phantom    6 年前

    BlobAttribute 位于程序集 Microsoft.Azure.WebJobs.Extensions.Storage ,添加引用 #r "Microsoft.Azure.WebJobs.Extensions.Storage" 可以修复。

    另外,看看这条线

    using(var outputBlob = binder.Bind<TextWriter>(new BlobAttribute($"{myQueueItem.OrderID}.lic")))
    

    集体贡品 要求blob路径为containername/filename,因此您可能需要在类似这样的文件之前添加一些容器

    using(var outputBlob = binder.Bind<TextWriter>(new BlobAttribute($"mycontainer/{myQueueItem.OrderID}.lic")))