DBImport V3.7版本发布及软件稳定性(自动退出问题)解决过程分享

澳门新葡亰平台游戏网站 5

帝国CMS私下认可的下载地址是弹出小窗口式下载,通过本学科能够改成直接张开新网页里下载,甚至一直下载方式。

6、下载不行使弹出窗口式表达

DBImport V3.7介绍:

 1:先上海教室,再介绍亮点效用:

澳门新葡亰平台游戏网站 1

原弹出式方式下载代码:

万一不应用弹出式下载的话,可依以下步骤完毕:

器重的晋升效用为:

1:扩大(Truncate Table)清表再插入功能:

清掉再插,能够保险七个库的多寡一致,自身很赏识这么些意义。

2:消息栏扩充蛋青部分:

紫罗兰色的新闻太多,临时候错误消息被淹陌,分拆出来单独深浅珍珠红块标记错误音讯,清晰一些。

澳门新葡亰平台游戏网站,3:增添入保险留全部的构造及计划还原:

前面只保留数据库链接的安插,为了第4点,包起了富有的铺排,满含表名等。

4:扩张自运营参数,用于依期成效的开机运维:

自运行参数为 – true 或 –
1,下一版本会管理成服务,帮助重启Computer后三回九转服务。

5:消除软件稳固性(自动退出)难点。

a href=#edown onclick="window.open('[!---down.url--]','','width=300,height=300');"[!---down.name--]/a

a href="[!---news.url--]e/DownSys/DownSoft/?classid=[!---classid--]id=[!---id--]pathid=0" target=_blank下载地址/a

1.修正下载地址模板: 将: [ a href=#edown
onclick=”window.open(‘[!—down.url–]’,”,’width=300,height=300′);”[!—down.name–]/a
] 改成: [ a
href=”/e/DownSys/GetDown/?classid=[!—classid–]id=[!—id–]pathid=[!—pathid–]”[!—down.name–]/a
]

下载地址:点击下载

 

直白下载式代码:

2.敞开直接下载按钮: 后台-》参数设置-》模型设置:“开启直接下载”

上面珍视介绍解决难题的长河:

回忆笔者发表ASP.NET
Aries框架的时候,有个示范地址: 。

是因为总有私人民居房别删除顾客或数量或退换登录密码,为了防微杜渐此种意况:

自己把DBImport放到服务器,同临时候开启了定时功用,感觉可以一劳永逸了。

结果软件运转运维着,就机关退出了,然后又得手工试行贰次。

因而近来在实践的方案,锁定了文件的只读属性,来防止客户纠正数据。

 

明天正好想起来,于是就悟出要解除它了,于是就有了以下的剧情:

a href="/e/DownSys/GetDown/?classid=[!---classid--]id=[!---id--]pathid=[!---pathid--]"[!---down.name--]/a

3.双重刷新下载表的页面就可以

消除的经过:

具体方法:

此方案瑕疵:起不到防盗链成效,假如您服务器本身就有防盗效果,才推荐应用此情势.

1:先确认景况:

独自运营软件,开启准期作用,然后出去溜达一圈,回头再看结果:

反复确认后,並且标题不单单:

A:卡住没影响。

B:抛非常定义到Application.Run(单独运维时表现一向退出软件)。

1、校勘下载地址模板:

2:通过AMDliTrace查看至极:

澳门新葡亰平台游戏网站 2

翻开了”英特尔liTrace事件和调用消息“:

F5运行,抛:“品味读取或写入受保证的内部存款和储蓄器。那平常提醒其余内部存款和储蓄器已破坏”。

自己认为找到标题,结果是掉坑里。

1:当一个方法返回数组T[] GetList()时,抛这个异常。

2:当Dictionary添加一个数组Add(key,T[])时,抛这个异常。

3:当方法的参数为:public MDataTable Select(params object[] selectColumns) 这种数组时,抛这个异常。

 

好呢,那数组是哪儿得罪了微软,要被它这么欺凌。

改了半天代码,把T[]数组的代码全改成List<T>,平日又一步,走向健康运转。

新生没折了,毕竟有一点点公开的不二等秘书籍有params参数不佳改,只可以把接收改成“仅IntelliTrace事件”。

运营,等出Bug后,点一下全部中断:

澳门新葡亰平台游戏网站 3

接下来就足以观望实行的平地风波了:

澳门新葡亰平台游戏网站 4

组成着温馨记录的错误音讯:

澳门新葡亰平台游戏网站 5

回头审了须臾间代码,终于开采一个Bug:

                if (isGoOn)
                {
                    using (SqlBulkCopy sbc = new SqlBulkCopy(con, (keepID ? SqlBulkCopyOptions.KeepIdentity : SqlBulkCopyOptions.Default) | SqlBulkCopyOptions.FireTriggers, sqlTran))
                    {
                        sbc.BatchSize = 100000;
                        sbc.DestinationTableName = SqlFormat.Keyword(mdt.TableName, DalType.MsSql);
                        sbc.BulkCopyTimeout = AppConfig.DB.CommandTimeout;
                        foreach (MCellStruct column in mdt.Columns)
                        {
                            sbc.ColumnMappings.Add(column.ColumnName, column.ColumnName);
                        }
                        sbc.WriteToServer(mdt);
                    }
                }
                if (_dalHelper == null)
                {
                    con.Close();
                    con = null;
                }
                else if (isCreateDal)
                {
                    _dalHelper.EndTransaction();
                    _dalHelper.Dispose();
                }

这段代码,在丰盛的时候,链接关闭持续,珍视它仍然开了事情的,没悟出都老江湖了,百密照旧有一输。

于是运营久了,连接池耗尽,加上事务卡死双重打击,分界面就进去长日子卡死不动了

找到难题改良就好了,关闭链接的放到Try的finally去:

finally
            {
                if (_dalHelper == null)
                {
                    con.Close();
                    con = null;
                }
                else if (isCreateDal)
                {
                    _dalHelper.EndTransaction();
                    _dalHelper.Dispose();
                }
}

将:

第四个难点:自动退出的标题,有过阅历。

毕竟那时创办实业写天涯论坛观众Smart的时候,就碰见过了:

对此Winform软件,不要在线程里操作UI,不要相信:StartForm.CheckForIllegalCrossThreadCalls
= false;

于是,把持有的代码都改成主线程委托调用的主意,近似以下代码:

private delegate void SetTextHandle(string id, string value);

        private void ThreadSetText(string id, string value)
        {
            this.Controls.Find(id, true)[0].Text = value;
        }
        private void SetText(string id, string value)
        {
            if (this.InvokeRequired)
            {
                this.Invoke(new SetTextHandle(ThreadSetText), new object[] { id, value });
            }
            else
            {
                ThreadSetText(id, value);
            }
        }

好了,至此,牢固性的主题素材一举成功了,周天钟爱!

 

[ a href=#edown onclick="window.open('[!---down.url--]','','width=300,height=300');"[!---down.name--]/a ]

改成:

[ a href="/e/DownSys/GetDown/?classid=[!---classid--]id=[!---id--]pathid=[!---pathid--]"[!---down.name--]/a ]

2.开启间接下载按键:后台-》参数设置-》模型设置:“开启间接下载”

3.重复刷新下载表的页面就可以

此方案劣势:起不到防盗链功用,纵然你服务器本身就有防盗效果,才推荐应用此办法。

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图