Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.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# 服务器上未加载带有响应的jpeg.Outputstream_C#_Asp.net - Fatal编程技术网

C# 服务器上未加载带有响应的jpeg.Outputstream

C# 服务器上未加载带有响应的jpeg.Outputstream,c#,asp.net,C#,Asp.net,我正在从事一个ASP.net 2.0 c#项目,我正在创建一个基本的验证码脚本。html如下所示: <img height="30" width="80" alt="" src="Captcha.aspx" /> 下面是Captcha.aspx的代码 protected void Page_Load(object sender, EventArgs e) { Bitmap objBMP = new System.Drawing.Bitmap(60

我正在从事一个ASP.net 2.0 c#项目,我正在创建一个基本的验证码脚本。html如下所示:

<img height="30" width="80" alt="" src="Captcha.aspx" />

下面是Captcha.aspx的代码

    protected void Page_Load(object sender, EventArgs e)
    {
        Bitmap objBMP = new System.Drawing.Bitmap(60, 20);
        Graphics objGraphics = System.Drawing.Graphics.FromImage(objBMP);
        objGraphics.Clear( ColorTranslator.FromHtml( "#054196" ) );

        objGraphics.TextRenderingHint = TextRenderingHint.AntiAlias;

        // configure the text
        Font objFont = new Font("Arial", 8, FontStyle.Bold);
        string randomStr = "";
        int[] myIntArray = new int[5];
        int x;

        // randomise the text
        Random autoRand = new Random();

        for (x = 0; x < 5; x++)
        {
            myIntArray[x] = System.Convert.ToInt32(autoRand.Next(0, 9));
            randomStr += (myIntArray[x].ToString());
        }

        //add string to session
        Session.Add("randomStr", randomStr);

        // draw the text
        objGraphics.DrawString( randomStr, objFont, Brushes.White, 3, 3);

        // Set the content type and return the image
        Response.ContentType = "image/jpeg";
        Encoder quality = Encoder.Quality;
        EncoderParameter qualityParam = new EncoderParameter(quality, 100L);
        EncoderParameters encParams = new EncoderParameters( 1 );
        encParams.Param[0] = qualityParam;
        ImageCodecInfo jpgEncoder = GetEncoder(ImageFormat.Jpeg);
        objBMP.Save(Response.OutputStream, jpgEncoder, encParams);

        objFont.Dispose();
        objGraphics.Dispose();
        objBMP.Dispose();
        Response.Flush();
    }


    private ImageCodecInfo GetEncoder(ImageFormat format)
    {

        ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();

        foreach (ImageCodecInfo codec in codecs)
        {
            if (codec.FormatID == format.Guid)
            {
                return codec;
            }
        }
        return null;
    }
受保护的无效页面加载(对象发送方,事件参数e)
{
Bitmap objBMP=新系统.Drawing.Bitmap(60,20);
Graphics objGraphics=System.Drawing.Graphics.FromImage(objBMP);
objGraphics.Clear(ColorTranslator.FromHtml(“#054196”);
objGraphics.TextRenderingHint=TextRenderingHint.AntiAlias;
//配置文本
Font objFont=新字体(“Arial”,8,FontStyle.Bold);
字符串randomStr=“”;
int[]myIntArray=新int[5];
int x;
//将文本随机化
随机自动与=新随机();
对于(x=0;x<5;x++)
{
myIntArray[x]=System.Convert.ToInt32(autoRand.Next(0,9));
randomStr+=(myIntArray[x].ToString());
}
//向会话添加字符串
添加(“randomStr”,randomStr);
//画课文
对象图形。抽绳(随机字符,对象字体,画笔。白色,3,3);
//设置内容类型并返回图像
Response.ContentType=“image/jpeg”;
编码器质量=编码器质量;
编码器参数qualityParam=新编码器参数(质量,100L);
EncoderParameters encParams=新的EncoderParameters(1);
encParams.Param[0]=qualityParam;
ImageCodeInfo jpgEncoder=GetEncoder(ImageFormat.Jpeg);
objBMP.Save(Response.OutputStream、jpgEncoder、encParams);
objFont.Dispose();
objGraphics.Dispose();
objBMP.Dispose();
Response.Flush();
}
专用ImageCodeInfo GetEncoder(ImageFormat格式)
{
ImageCodecInfo[]codecs=ImageCodecInfo.GetImageDecoders();
foreach(编解码器中的ImageCodeInfo编解码器)
{
if(codec.FormatID==format.Guid)
{
返回编解码器;
}
}
返回null;
}
这在我的本地机器上运行良好,但是当上传到我们的开发服务器时,它失败了。由于我在项目中的角色,我没有直接访问dev服务器进行调试,所以这是一个尝试和错误的过程


有什么想法吗?

结果表明服务器出于某种原因不喜欢aspx页面。所以我把验证码移到了一个ashx文件中,然后它就成功了

您是否至少可以使用Fiddler或FireBug来检查请求和响应(有时在生产环境中,URL错误,请求并不是简单地发送到假定的位置)。FireBug在控制台中发出“图像损坏或被截断”。或者您可以试着放置
response.End()
作为
页面的最后一行加载
使其工作。