C#和Mono从Raspberri Pi访问Azure?

C#和Mono从Raspberri Pi访问Azure?,c#,azure,mono,raspberry-pi,azure-storage-blobs,C#,Azure,Mono,Raspberry Pi,Azure Storage Blobs,我正在尝试使用我的Respberry Pi从Azure下载Blob。代码是可靠的,它在我的桌面上运行良好。mono似乎没有azure程序集功能,但我读到您可以使用mono访问azure,所以我想知道我是否犯了错误 我的代码: using System.Collections.Generic; using Microsoft.WindowsAzure.Storage; using Microsoft.WindowsAzure.Storage.Blob; using System.Configura

我正在尝试使用我的Respberry Pi从Azure下载Blob。代码是可靠的,它在我的桌面上运行良好。mono似乎没有azure程序集功能,但我读到您可以使用mono访问azure,所以我想知道我是否犯了错误

我的代码:

using System.Collections.Generic;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
using System.Configuration;

namespace CPGetFamilyPhotos
{
    class Program
    {
        static void Main(string[] args)
        {
            // Retrieve storage account from connection string.
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["AzureImagesConnection"].ConnectionString);
            // Create the blob client.
            CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
            // Retrieve a reference to a container.
            var container = blobClient.GetContainerReference("newAdverts").ListBlobs();
            // Retrieve filenames from container List
            var urls = new List<string>();
            int fileName = 1;

            foreach (var blob in container)
            {
                using (var fileStream = System.IO.File.OpenWrite(@"\home\pi\Pictures\" + fileName + ".jpg"))
                {
                    var blobReference = blobClient.GetBlobReferenceFromServer(blob.Uri);
                    blobReference.DownloadToStream(fileStream);
                    fileName++;
                }
            }

        }
    }
}
使用System.Collections.Generic;
使用Microsoft.WindowsAzure.Storage;
使用Microsoft.WindowsAzure.Storage.Blob;
使用系统配置;
命名空间CPGetFamilyPhotos
{
班级计划
{
静态void Main(字符串[]参数)
{
//从连接字符串中检索存储帐户。
CloudStorageAccount-storageAccount=CloudStorageAccount.Parse(ConfigurationManager.ConnectionString[“AzureImagesConnection”].ConnectionString);
//创建blob客户端。
CloudBlobClient blobClient=storageAccount.CreateCloudBlobClient();
//检索对容器的引用。
var container=blobClient.GetContainerReference(“newAdverts”).ListBlobs();
//从容器列表中检索文件名
var url=新列表();
int fileName=1;
foreach(容器中的var blob)
{
使用(var fileStream=System.IO.File.OpenWrite(@“\home\pi\Pictures\”+fileName+”.jpg))
{
var blobReference=blobClient.GetBlobReferenceFromServer(blob.Uri);
blobreeference.DownloadToStream(fileStream);
文件名++;
}
}
}
}
}
我已经建立了发布程序,并将整个发布文件夹复制到Pi。 我已经运行了
mozroot–导入–请求删除--machine

Pi上我的文件夹的内容:

错误图像(图像中有轻微重叠)。

由于错误,您需要确保代码所需的所有依赖性都存在。在本例中,它是
Microsoft.WindowsAzure.Storage.dll

“我已生成文件并将.exe复制到Pi”


您需要复制.exe和所需的所有dll(进行发布构建并查看bin文件夹)

由于出现错误,您需要确保代码所需的所有依赖性都存在。在本例中,它是
Microsoft.WindowsAzure.Storage.dll

“我已生成文件并将.exe复制到Pi”


您需要复制.exe和所需的所有dll(进行发布构建并查看bin文件夹)

您的问题是根证书。如果您查看异常,它清楚地表明它无法识别TLS连接证书

首先,请尝试下面介绍的解决方案:

mozroots解决方案通常效果最好,只要执行它,所有证书都会更新


如果这不能解决您的问题,您可以始终挂接到ServicePointManager.ServerCertificateValidationCallback事件,并自己接受证书。

您的问题是根证书。如果您查看异常,它清楚地表明它无法识别TLS连接证书

首先,请尝试下面介绍的解决方案:

mozroots解决方案通常效果最好,只要执行它,所有证书都会更新


如果这不能解决您的问题,您可以始终挂接到ServicePointManager.ServerCertificateValidationCallback事件,并自己接受证书。

图像仅包含文本,请包含文本而不是图像,因为这样,google/stackoverflow和索引PropertyPologies就可以搜索它,我无法将文本从远程终端复制到桌面上。这可能是我的首选,但屏幕帽是唯一的选项。图像只包含文本,请包含文本而不是图像,因为这样它将被google/stackoverflow搜索并被适当地索引,因此我无法将文本从远程终端复制到我的桌面上。这是我的偏好,但屏幕帽是唯一的选择。我尝试了@Xiaomin Wu,但仍然没有成功。我已经更新了我的问题以反映新的错误。非常感谢您的帮助,我对此完全不知所措。@DMur似乎是您解决的第一个问题。现在您遇到了身份验证问题。试试Gusman的建议,如果不起作用,尽量不要使用HTTPS来证明你的应用程序是否能起作用,试着把问题分开。你好@Xiaomin Wu。当我从桌面调试我的应用程序时,它工作得非常好。然后我创建发布版本,并将其复制到raspberrypi中,以使用mono运行,但它不起作用。“尽量不要使用HTTPS来证明你的应用程序是否可以工作”-你能解释一下你的意思吗?关于“HTTPS”,我认为Azure存储库默认使用HTTPS与存储帐户通信。所以我想如果你能找到一种不使用HTTPS的方法,你现在就可以解决这个问题,看看是否还有其他的拦截器。你在linux上开发mono吗?如果不尝试设置linux环境并在mono上开发,看看你的应用程序是否仍然有效,我尝试了@Xiaomin Wu,但仍然没有成功。我已经更新了我的问题以反映新的错误。非常感谢您的帮助,我对此完全不知所措。@DMur似乎是您解决的第一个问题。现在您遇到了身份验证问题。试试Gusman的建议,如果不起作用,尽量不要使用HTTPS来证明你的应用程序是否能起作用,试着把问题分开。你好@Xiaomin Wu。当我从桌面调试我的应用程序时,它工作得非常好。然后我创建发布版本,并将其复制到raspberrypi中,以使用mono运行,但它不起作用。“尽量不要使用HTTPS来证明你的应用程序是否可以工作”-你能解释一下你的意思吗?关于“HTTPS”,我认为Azure存储库默认使用HTTPS与存储帐户通信。所以我想如果你能找到一个办法