我有这个解决方案,可以在我的开发工作站上使用 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/