gpt4 book ai didi

asp.net - 在 Azure asp.net 中生成图像

转载 作者:行者123 更新时间:2023-12-03 00:39:47 25 4
gpt4 key购买 nike

我目前正在运行一个专用服务器的站点,但希望将来使用 Microsoft 的 Azure 云平台进行扩展,但我不确定我的代码的某些部分是否可以在 Azure 上运行。

该网站由一个项目库组成,每个项目都有一个图像。图像存储在sqlserver数据库中。

我创建了一个 http 处理程序,它将图像缓存到磁盘并将请求重定向到图像(如帖子末尾所示)。

图像保存到我的 ASP.NET 应用程序内名为“imagecache”的虚拟目录中。 (即 ~/imagecache/)。

由于 Web 应用程序将在 Azure 平台上的许多虚拟机实例中运行,因此图像需要在实例之间共享,对吗?

所以我的问题确实是..实现我已有的与azure兼容的最佳方法是什么?

谢谢

图像生成代码..

public class getimage : IHttpHandler {


private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

public void ProcessRequest (HttpContext context) {

try
{

string uniqueid = "";

if(context.Request.QueryString["id"]) uniqueid = context.Request.QueryString["id"].ToString();

string dir = "~/imagecache/";
string image_target_path = dir + "image-file-" + uniqueid + ".png";

byte[] data = null;
context.Response.ContentType = "image/png";

if (!System.IO.File.Exists(context.Server.MapPath(image_target_path)))
{
if (context.Request.QueryString["id"] != null)
{
// get image data from the database
data = ImageHelper.getDatabaseImageDataByID(Convert.ToInt32(uniqueid));

using (System.Drawing.Image img = System.Drawing.Image.FromStream(new System.IO.MemoryStream(data)))
{
// save image to disk in the virtual dir
img.Save(context.Server.MapPath(image_target_path));
}
}
else
{
// set a sample image if no id is set
image_target_path = "~/images/noimage.png";
}
}

// redirect request to image file
context.Response.Redirect(image_target_path, false);

}
catch (Exception ex)
{
log.Error(ex.Message, ex);
}
}

public bool IsReusable {
get {
return false;
}
}

}

最佳答案

这里的简单答案是将镜像存储从 SQL 移动到 Azure 存储 Blob。然后,这些 blob 的容器可以公开并通过 URL 进行访问,而无需您充当缓存层的中介。

但是,如果您仍然希望应用程序通过 http 处理程序充当中介,那么您仍然应该能够使用 1.3 SDK 来完成此任务。此版本引入了完整的 IIS,它允许您在 Web 角色中配置虚拟目录和 http 处理程序。

但我真的建议您看看公共(public)可读的 blob 容器的使用。它为您提供相同级别的功能,同时显着减少工作量。如果需要,您甚至可以结合使用这些技术,加入少量 Azure AppFabric 缓存以添加更多灵 active 和功能。

关于asp.net - 在 Azure asp.net 中生成图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4874766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com