Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 创建ASP.Net处理程序以以字节形式返回图像_C#_Asp.net - Fatal编程技术网

C# 创建ASP.Net处理程序以以字节形式返回图像

C# 创建ASP.Net处理程序以以字节形式返回图像,c#,asp.net,C#,Asp.net,我正在考虑创建一个处理程序,根据传递的id返回图像,我以前没有创建过自己的处理程序,当我创建它时,它提到必须向IIS注册。这个项目被分发到很多客户机,我是否需要更改每个客户机的IIS,或者是否有办法解决这个问题,或者是处理程序的替代方案 编辑:作为对以下内容的回应,这是我创建的(但尚未测试),因此我需要为此更改IIS或web.config中的任何内容吗 public class Photos : IHttpHandler { #region IHttpHandler Members

我正在考虑创建一个处理程序,根据传递的id返回图像,我以前没有创建过自己的处理程序,当我创建它时,它提到必须向IIS注册。这个项目被分发到很多客户机,我是否需要更改每个客户机的IIS,或者是否有办法解决这个问题,或者是处理程序的替代方案

编辑:作为对以下内容的回应,这是我创建的(但尚未测试),因此我需要为此更改IIS或web.config中的任何内容吗

public class Photos : IHttpHandler
{
    #region IHttpHandler Members

    public bool IsReusable
    {
        get { return true; }
    }

    public void ProcessRequest(HttpContext context)
    {
        //write your handler implementation here.
        var img = Image.FromFile(@"C:\Projects\etc\logo.jpg");
        context.Response.ContentType = "image/jpeg";
        img.Save(context.Response.OutputStream, ImageFormat.Jpeg);
    }

    #endregion
}

您可以创建一个继承
IHttpHandler
的类,并在该类中获取id(来自查询字符串或类似内容),处理请求并返回二进制数据。不应该向IIS注册它

public class MyHandler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        //Get Id from somewhere

        //Get binary data

        context.Response.ContentType = "application/octet-stream";
        context.Response.BinaryWrite(bytes);
    }
}

您可以将通用处理程序添加到项目中(一个
.ashx
文件)。它将为您提供一个带有代码隐藏的文件,如下所示(摘录):

您可以使用
context
获取查询字符串或路由参数,并使用
context.Response
属性写入图像。将返回的内容类型更改为图像内容类型,即可设置

您可以将图像
src
设置为:
“Handler1.ashx?id=12345”
,也可以添加指向处理程序的漂亮url路由


无需为此配置IIS。

HttpHandler已在网站的web.config中注册,如果您将配置文件与网站一起分发,则无需更改IIS配置。

您可以查看这篇关于处理程序的博文,我认为这与您想要做的非常接近。

到目前为止您得到了什么?请参阅编辑,建立正常,但不返回图像,尽管检查路径是正确的。是的,这看起来很好,我!其次,这是解决这个问题的方法,
jpeg
返回类型比
octet-stream
更好,使客户更清楚地了解他们得到了什么。谢谢,使用测试,但不显示图像。是不是可能我错过了什么,还是一定是asp图像控件?@WillemDuncan是的!我相信他在编辑之前的问题提到了返回二进制数据,这就是我设置
octect-stream
…@user1166905导航到
http://localhost:{port}/Photos.ashx
public void ProcessRequest(HttpContext context)
{
    context.Response.ContentType = "text/plain";
    context.Response.Write("Hello World");
}