我有这个解决方案,可以在我的开发工作站上使用 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。不知道这是怎么回事。

最佳答案

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

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

设置启动任务以分配目录权限。
值得一读。
WindowsAzure: Is it possible to set directory permissions within the 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 存储非常便宜。

hths,詹姆斯

关于c# - Azure 502 错误 .. 尝试使用 new WebBrowser() 和/或 image.Save(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16506751/

10-12 00:56
查看更多