4

我有这个解决方案,可以在我使用 Visual Studio 2012 .Net 4.5 的开发工作站上完美运行。没有 IIS 更改。它基本上是 C# 抓取网页并将其转换为 bmp。我不确定我的问题是否是我正在尝试写入文件系统。

这就是我在 Azure 中得到的。而且我正在阅读它可能是 Azure 中的限制/限制(如果是这种情况,我会非常失望)

502 - Web 服务器在充当网关或代理服务器时收到无效响应。

我认为这段代码的问题是:

 public Bitmap GenerateThumbnail()
    {
        Thread thread = new Thread(new ThreadStart(GenerateThumbnailInteral));
        thread.SetApartmentState(ApartmentState.STA);
        thread.Start();
        thread.Join();
        return ThumbnailImage;
    }
    private void GenerateThumbnailInteral()
    {
        WebBrowser webBrowser = new WebBrowser();
        webBrowser.ScrollBarsEnabled = false;
        if (this.Method == ThumbnailMethod.Url)
            webBrowser.Navigate(this.Url);
        else webBrowser.DocumentText = this.Html;
        webBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(WebBrowser_DocumentCompleted);
        while (webBrowser.ReadyState != WebBrowserReadyState.Complete) Application.DoEvents();
        webBrowser.Dispose();
    }

或者可能使用 image.save (这可能是下一个问题)。

image.Save(Server.MapPath("~") + "/output/"+filename);

我们的预算很低,并试图保持我们的托管网站简单且便宜。宁愿不必构建工作进程或使用 Azure 的存储功能。

===

更新:

我不认为我的问题是保存,但确实认为这将是 Azure 上的问题。此外,作为测试,我创建了一个处理程序 ashx,它将图像流返回到 html img 标记。这在本地也很有效,但在 Azure 上我只得到红色 X。不知道这是怎么回事。

4

1 回答 1

3

您基本上没有权限在 Azure 中执行此操作来写入本地目录而不分配它们。

但是这个问题有很多解决方案。

设置您的启动任务以将权限分配给目录。值得一读。 WindowsAzure:是否可以在 web.config 中设置目录权限?

如果您需要临时本地驱动器,那么这是首选方法。

http://msdn.microsoft.com/en-us/library/windowsazure/ee758708.aspx

如果您需要持久存储,那么 Blob 存储将是最好的选择。

http://www.windowsazure.com/en-us/develop/net/how-to-guides/blob-storage/

我相信您也可以像 VHD 一样将驱动器连接到计算,但我不确定两个计算是否可以同时写入该驱动器,因此如果您需要保留数据,最好使用 blob 存储。

Blob 存储非常便宜。

嗯,詹姆斯

于 2013-05-12T13:56:32.923 回答