FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 2951|回复: 4
打印 上一主题 下一主题

随机报错

[复制链接]
跳转到指定楼层
楼主
发表于 2014-1-14 01:09:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
随机性报错,报错信息如下:
  1. Server Error in '/' Application.

  2. Object reference not set to an instance of an object.

  3. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

  4. Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

  5. Source Error:

  6. An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

  7. Stack Trace:


  8. [NullReferenceException: Object reference not set to an instance of an object.]
  9.    FineUI.CommonResourceHelper.IsHeaderContains(Page page, String controlId) +40
  10.    FineUI.CommonResourceHelper.AddContentToHead(Page page, String controlId, String msg) +19
  11.    FineUI.CommonResourceHelper.RegisterCommonResource(Page page) +87
  12.    FineUI.ResourceManager.SetupFirstLoadResource() +14
  13.    FineUI.ResourceManager.Page_PreRenderComplete(Object sender, EventArgs e) +190
  14.    System.Web.UI.Page.OnPreRenderComplete(EventArgs e) +8695102
  15.    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1029

  16. Version Information: Microsoft .NET Framework Version:2.0.50727.3053; ASP.NET Version:2.0.50727.3053
复制代码
代码前端为:
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="validate.aspx.cs" Inherits="validate" %>

  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head runat="server">
  5.     <title></title>
  6. </head>
  7. <body>
  8.     <form id="form1" runat="server">
  9.     <div>
  10.    
  11.     </div>
  12.     </form>
  13. </body>
  14. </html>
复制代码
后端为:

  1. using System;
  2. using System.Drawing;
  3. public partial class validate : System.Web.UI.Page
  4. {
  5.     protected void Page_Load(object sender, EventArgs e)
  6.     {
  7.         Random rad = new Random(Guid.NewGuid().GetHashCode());
  8.         string aa = "";
  9.         for (int i = 0; i < 4; i++)
  10.         {
  11.             aa = aa + rad.Next(10).ToString();
  12.         }
  13.         Session["yanzheng"] = aa;
  14.          CreateImages(Convert.ToString(aa));
  15.     }
  16.     /// <summary>
  17.     /// /// 生成验证图片
  18.     /// /// </summary>
  19.     /// /// <param name="checkCode">验证字符</param>
  20.     protected void CreateImages(string checkCode)
  21.     {
  22.         int iwidth = (int)(checkCode.Length * 15);
  23.         System.Drawing.Bitmap image = new System.Drawing.Bitmap(iwidth, 30);
  24.         Graphics g = Graphics.FromImage(image);
  25.         g.Clear(Color.LightCyan);
  26.         //定义颜色
  27.         Color[] c = { Color.Black, Color.Red, Color.DarkBlue, Color.Green, Color.Orange, Color.Brown, Color.DarkCyan, Color.Purple, Color.SkyBlue };
  28.         //定义字体
  29.         string[] font = { "Verdana", "Microsoft Sans Serif", "Comic Sans MS", "Arial", "宋体", "Comic Sans MS" };
  30.         Random rand = new Random(Guid.NewGuid().GetHashCode());
  31.         //随机输出噪点
  32.         for (int i = 0; i < 150; i++)
  33.         {
  34.             int x = rand.Next(image.Width);
  35.             int y = rand.Next(image.Height);
  36.            // g.DrawPie(new Pen(GetRandomColor(), 0), x, y, 6, 6, 1, 1);
  37.         }
  38.         for (int i = 0; i < 12; i++)
  39.         {
  40.             int x1 = rand.Next(image.Width);
  41.             int x2 = rand.Next(image.Width);
  42.             int y1 = rand.Next(image.Height);
  43.             int y2 = rand.Next(image.Height);

  44.             g.DrawLine(new Pen(GetRandomColor()), x1, y1, x2, y2);
  45.         }

  46.         //输出不同字体和颜色的验证码字符
  47.         for (int i = 0; i < checkCode.Length; i++)
  48.         {
  49.             int cindex = rand.Next(7);
  50.             int findex = rand.Next(6);
  51.             Font _font = new System.Drawing.Font(font[findex], 14, System.Drawing.FontStyle.Bold);
  52.             Brush b = new System.Drawing.SolidBrush(c[cindex]);
  53.             int ii = 4;
  54.             if ((i + 1) % 2 == 0)
  55.             {
  56.                 ii = 2;
  57.             }
  58.             g.DrawString(checkCode.Substring(i, 1), _font, b, 3 + (i * 12), ii);
  59.         }
  60.         Session["yanzheng"] = checkCode; //保存验证码
  61.         //画一个边框
  62.         g.DrawRectangle(new Pen(Color.Red, 0), 100, 0, image.Width - 1, image.Height - 1);
  63.         //输出到浏览器
  64.         System.IO.MemoryStream ms = new System.IO.MemoryStream();
  65.         image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);

  66.         Response.ClearContent();//Response.ClearContent();
  67.         Response.ContentType = "image/Jpeg";
  68.         Response.BinaryWrite(ms.ToArray());

  69.         g.Dispose();
  70.         image.Dispose();
  71.     }
  72.     //////////////////////////////////////////////////////////
  73.     /// /// 生成随机颜色
  74.     /// //////////////////////////////////////////////////////////

  75.     public static System.Drawing.Color GetRandomColor()
  76.     {
  77.         Random randomNum_1 = new Random(Guid.NewGuid().GetHashCode());
  78.         System.Threading.Thread.Sleep(randomNum_1.Next(1));
  79.         int int_Red = randomNum_1.Next(255);

  80.         Random randomNum_2 = new Random((int)DateTime.Now.Ticks);
  81.         int int_Green = randomNum_2.Next(255);

  82.         Random randomNum_3 = new Random(Guid.NewGuid().GetHashCode());

  83.         int int_Blue = randomNum_3.Next(255);
  84.         int_Blue = (int_Red + int_Green > 380) ? int_Red + int_Green - 380 : int_Blue;
  85.         int_Blue = (int_Blue > 255) ? 255 : int_Blue;


  86.         return GetDarkerColor(System.Drawing.Color.FromArgb(int_Red, int_Green, int_Blue));
  87.     }

  88.     //获取加深颜色
  89.     public static Color GetDarkerColor(Color color)
  90.     {
  91.         const int max = 255;
  92.         int increase = new Random(Guid.NewGuid().GetHashCode()).Next(255); //还可以根据需要调整此处的值


  93.         int r = Math.Abs(Math.Min(color.R - increase, max));
  94.         int g = Math.Abs(Math.Min(color.G - increase, max));
  95.         int b = Math.Abs(Math.Min(color.B - increase, max));


  96.         return Color.FromArgb(r, g, b);
  97.     }
  98. }
复制代码


web。config为
  1. <?xml version="1.0"?>
  2. <!--
  3.     注意: 除了手动编辑此文件以外,您还可以使用
  4.     Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的
  5.      “网站”->“Asp.Net 配置”选项。
  6.     设置和注释的完整列表在
  7.     machine.config.comments 中,该文件通常位于
  8.     \Windows\Microsoft.Net\Framework\v2.x\Config 中
  9. -->
  10. <configuration>
  11.         <configSections>
  12.                 <section name="FineUI" type="FineUI.ConfigSection, FineUI"/>
  13.         </configSections>
  14.         <!-- 可用的配置项(这里列的都是默认值):Language="zh_CN" AjaxTimeout="60" EnableAjax="true" Theme="blue" FormMessageTarget="qtip" FormOffsetRight="20" FormLabelWidth="100" FormLabelSeparator=":" IconBasePath="~/icon" EnableAjaxLoading="true" AjaxLoadingType="default" CustomTheme="" CustomThemeBasePath="~/theme" -->
  15.         <FineUI EnableBigFont="true" DebugMode="false" AjaxTimeout="6000"/>
  16.         <appSettings>
  17.         </appSettings>
  18.         <system.web>
  19.                 <sessionState mode="InProc" timeout="1000"/>
  20.                 <!-- Net3.5以上的项目,一定要为pages节点加上这两个属性:controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID" -->
  21.                 <pages>
  22.                         <controls>
  23.                                 <add assembly="FineUI" namespace="FineUI" tagPrefix="ext"/>
  24.                         </controls>
  25.                 </pages>
  26.                 <httpModules>
  27.                         <add name="FineUIScriptModule" type="FineUI.ScriptModule, FineUI"/>
  28.                 </httpModules>
  29.                 <httpHandlers>
  30.                         <add verb="GET" path="res.axd" type="FineUI.ResourceHandler, FineUI"/>
  31.                 </httpHandlers>
  32.                 <customErrors mode="Off"/>
  33.                 <compilation debug="true">
  34.                         <assemblies>
  35.                                 <add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
  36.                         </assemblies></compilation>
  37.         </system.web>
  38.         <system.webServer>
  39.                 <modules>
  40.                         <add name="FineUIScriptModule" type="FineUI.ScriptModule, FineUI"/>
  41.                 </modules>
  42.                 <httpHandlers>
  43.                         <add verb="GET" path="res.axd" type="FineUI.ResourceHandler, FineUI"/>
  44.                         <add verb="Get" path="WebResource.axd" type="System.Web.Handlers.AssemblyResourceLoader"/>
  45.                 </httpHandlers>
  46.                 <httpErrors errorMode="Detailed"/>
  47.                 <asp scriptErrorSentToBrowser="true"/>
  48.         </system.webServer>
  49.         <system.codedom>
  50.         </system.codedom>
  51. </configuration>
复制代码


有时候工作很正常,有时候爆上述错误
沙发
发表于 2014-1-14 09:43:54 | 只看该作者
要相信程序每次执行结果的稳定性,然后再找问题。

请使用空项目重建重现问题的示例,才有助于解决问题
板凳
 楼主| 发表于 2014-1-14 14:20:25 | 只看该作者
sanshi 发表于 2014-1-14 09:43
要相信程序每次执行结果的稳定性,然后再找问题。

请使用空项目重建重现问题的示例,才有助于解决问题 ...

找到重现的方法了,第一次打开页面会报错,然后有成功打开页面后,以后的都不会报错。

异常的代码位于

  1.         internal static void RegisterCommonResource(Page page)
  2.         {
  3.             #region powered-by

  4.             //string metaName = "powered-by";
  5.             //string metaContent = String.Format("FineUI v{0} - 基于 ExtJS 的专业 ASP.NET 控件库 - http://fineui.com/", GlobalConfig.ProductVersion);
  6.             //AddContentToHead(page, CONTROL_ID_PREFIX + "comments", String.Format(META_TEMPLATE, metaName, metaContent));

  7.             #endregion

  8.             // ExtJS CSS & JS 版本号,只有升级更新CSS或者JS时才需要更新。
  9.             //string extjsCSSJSVersion = "3";
  10.             //string fineuiVersion = GlobalConfig.ProductVersion;
  11.             string extjsBasePath = page.ResolveUrl(GlobalConfig.GetExtjsBasePath());

  12.             #region css

  13.             if (!String.IsNullOrEmpty(PageManager.Instance.CustomTheme))
  14.             {
  15.                 AddCssPathToHead(page, CONTROL_ID_PREFIX + "notheme.css", String.Format("{0}/res/css/notheme.css", extjsBasePath));
复制代码


     if (!String.IsNullOrEmpty(PageManager.Instance.CustomTheme)) 爆出异常:

第一次打开页面:PageManager.Instance 为NULL,

用户代码未处理 System.NullReferenceException
  Message=未将对象引用设置到对象的实例。
  Source=FineUI
  StackTrace:
       在 FineUI.CommonResourceHelper.RegisterCommonResource(Page page)
       在 FineUI.ResourceManager.SetupFirstLoadResource()
       在 FineUI.ResourceManager.Page_PreRenderComplete(Object sender, EventArgs e)
       在 System.Web.UI.Page.OnPreRenderComplete(EventArgs e)
       在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
  InnerException:
地板
发表于 2014-1-14 14:51:04 | 只看该作者
你的aspx页面没有加PageManager控件,加上再试试
<x: PageManager ID="PageManager1" runat="server" />
5#
 楼主| 发表于 2014-1-14 23:11:52 | 只看该作者
rookies_lts 发表于 2014-1-14 14:51
你的aspx页面没有加PageManager控件,加上再试试

我是做下载二进制功能,如果加上面代码,会在文件中附加html代码,导致文件损坏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-11-27 08:30 , Processed in 0.044847 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表