微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – Azure 502错误..尝试新的WebBrowser()和/或image.Save()

我有这个解决方案,使用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的存储功能.

===

更新:

我不认为我的问题是Save,但确实认为这将是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存储非常便宜.

詹姆斯,詹姆斯

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐