异常:HRESULT: 0x80070057 (E_INVALIDARG) 的处理
作者:admin 日期:2010-08-26
碰到这个异常的原因很偶然:
现象:
Solution在ReBuild过程中断电了,来电恢复了,重析编译整个Solution不报错,但在浏览页面时始终无法正常浏览,而在design的视图中,每个aspx的首行代码都报错。
解决过程:
搜索找到很多国内的方案,有的建议重新引用AjaxControlToolkit.dll,还有就是清除asp.net的缓存文件,但都没有看到想要的效果,最后在一个国外MSDN的贴子(http://social.msdn.microsoft.com/Forums/en-US/csharpide/thread/352c58ec-65d8-4d77-ac7b-d2338c621ef3)中看到种种处理办法.
相关方法可以尝试一下,不能保证所有的方案都能达到效果,但应该也八九不离十了吧。呵呵。
方案1:清空Temporary ASP.NET Files文件夹的文件,重新编译
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\MyWebService and recompiled and it worked fine.
这个方法是网上推荐得最多的方案,好像也可行,也不可行。里面有些文件不能直接删除,需要通过特殊手段进行删除。
方案2:卸载系统上所有的Net Framework的版本,IIS,重新安装Net Framework,IIS
这个方法好像比较麻烦,而且也不太能确定能达到解决异常的效果。就网上看到的结果而言,大多数人这样操作并没有解决问题。这里要注意安装的顺序
•Uninstall .NET (Runtime and SDK)->Uninstall IIS->Install .NET (Runtime and SDK)->Install IIS
方案3:这个方法我没看懂,就不解释了,貌似比较复杂Background: The assembly causing me trouble was built in house and I did not have the source code.
Required: You need the Visual Studio SDK for ildasm.exe
Steps:
1.) Disassemble the .dll with the command ildasm.exe AssemblyName.dll /out:AssemblyName.il
2.) Open the newly created AssemblyName.il with a text editor and search for "permissionset"
3.) Find and delete the following lines:
.permissionset reqmin
= {[mscorlib]System.Security.Permissions.PermissionSetAttribute = {property string 'Name' = string('nobody')},
[mscorlib]System.Security.Permissions.SecurityPermissionAttribute = {property bool 'Execution' = bool(true)}}
4.) Save and rebuild the assembly with the following command: ilasm.exe AssemblyName.il /dll
5.) Throw the new dll in your bin directory or if it's strong named and needed in the GAC you can put it there.
方案4:清除 系统盘:\用户\用户名称\AppData\Local\Temp\Temporary ASP.NET Files里面的文件
C:\Users\<name>\AppData\Local\Temp\Temporary ASP.NET Files
我是用这个方案搞掂的,恰巧我的是win7的系统.不过好像这个与方案1配合使用较好.注意:Vista系统与Window7系统这个尤为适合
一点心得,与大家分享。欢迎指正。
现象:
Solution在ReBuild过程中断电了,来电恢复了,重析编译整个Solution不报错,但在浏览页面时始终无法正常浏览,而在design的视图中,每个aspx的首行代码都报错。
解决过程:
搜索找到很多国内的方案,有的建议重新引用AjaxControlToolkit.dll,还有就是清除asp.net的缓存文件,但都没有看到想要的效果,最后在一个国外MSDN的贴子(http://social.msdn.microsoft.com/Forums/en-US/csharpide/thread/352c58ec-65d8-4d77-ac7b-d2338c621ef3)中看到种种处理办法.
相关方法可以尝试一下,不能保证所有的方案都能达到效果,但应该也八九不离十了吧。呵呵。
方案1:清空Temporary ASP.NET Files文件夹的文件,重新编译
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\MyWebService and recompiled and it worked fine.
这个方法是网上推荐得最多的方案,好像也可行,也不可行。里面有些文件不能直接删除,需要通过特殊手段进行删除。
方案2:卸载系统上所有的Net Framework的版本,IIS,重新安装Net Framework,IIS
这个方法好像比较麻烦,而且也不太能确定能达到解决异常的效果。就网上看到的结果而言,大多数人这样操作并没有解决问题。这里要注意安装的顺序
•Uninstall .NET (Runtime and SDK)->Uninstall IIS->Install .NET (Runtime and SDK)->Install IIS
方案3:这个方法我没看懂,就不解释了,貌似比较复杂Background: The assembly causing me trouble was built in house and I did not have the source code.
Required: You need the Visual Studio SDK for ildasm.exe
Steps:
1.) Disassemble the .dll with the command ildasm.exe AssemblyName.dll /out:AssemblyName.il
2.) Open the newly created AssemblyName.il with a text editor and search for "permissionset"
3.) Find and delete the following lines:
.permissionset reqmin
= {[mscorlib]System.Security.Permissions.PermissionSetAttribute = {property string 'Name' = string('nobody')},
[mscorlib]System.Security.Permissions.SecurityPermissionAttribute = {property bool 'Execution' = bool(true)}}
4.) Save and rebuild the assembly with the following command: ilasm.exe AssemblyName.il /dll
5.) Throw the new dll in your bin directory or if it's strong named and needed in the GAC you can put it there.
方案4:清除 系统盘:\用户\用户名称\AppData\Local\Temp\Temporary ASP.NET Files里面的文件
C:\Users\<name>\AppData\Local\Temp\Temporary ASP.NET Files
我是用这个方案搞掂的,恰巧我的是win7的系统.不过好像这个与方案1配合使用较好.注意:Vista系统与Window7系统这个尤为适合
一点心得,与大家分享。欢迎指正。
Oracle EBS:PO行接收关闭后修改其它行自动打开
作者:admin 日期:2010-08-26
Oracle EBS:PO行接收关闭后,因更改交期或其它元素,修改重新送审后,接收关闭状态会自动打开.这对于更改采购计划的时候会造成比较大的困扰。
可以通过作取消动作来代替接收关闭,但对取消后的需求要比较清确的明确供需情况。
搞来搞去,原来是个bug。在11.5.0出现的bug,在12照样出现了。。
记录一下,方便碰到此问题的同仁可以参考。
ArticleID:469330.1
https://support.oracle.com/CSP/main/article?cmd=show&type=NOT&doctype=PROBLEM&id=469330.1
Applies to:
Oracle Purchasing - Version: 11.5.10
This problem can occur on any platform.
Symptoms
Any line on a Purchase order that has been "Closed for Receiving" will be reopened if the PO is later re-approved. This differs from the results if the line is just Closed, where the lines will remain closed through all subsequent re-approvals.
The issue is seen regardless if the changes that caused the the re-approval touched the line or did not.
All Closed for Receiving lines are reopened upon submission for Approval again.
Cause
In pocup.lpc a condition is missing on the po_line_locations, to make sure that the commit only updates those records that are not already approved.
Solution- Apply Patch 5089729
- Updated key file: pocup.lpc - 115.10.11510.6
Version Check
strings -a $PO_TOP/bin/POXCON | grep '$Header' | grep pocup.lpc- Stop the PO Document Approval Manager
- Relink all PO executable:
1. Go to $AD_TOP/bin and relink the PO executable.
2. adrelink.sh force=y "PO ALL"
- Start the PO Document Approval Manager
- Retest issue
This patch is applicable only on top of oracle Applications Release 11.5.10 and/or Procurement Family Pack J.
References
BUG:5089729 - CLOSED PURCHASE orDER LINES ARE RE OPENED
BUG:6146142 - MANUALLY CLOSED FOR RECEIVING LINES OPENS UPON PO REAPPROVAL.
一点积累,与大家分享。欢迎指正.
可以通过作取消动作来代替接收关闭,但对取消后的需求要比较清确的明确供需情况。
搞来搞去,原来是个bug。在11.5.0出现的bug,在12照样出现了。。
记录一下,方便碰到此问题的同仁可以参考。
ArticleID:469330.1
https://support.oracle.com/CSP/main/article?cmd=show&type=NOT&doctype=PROBLEM&id=469330.1
Applies to:
Oracle Purchasing - Version: 11.5.10
This problem can occur on any platform.
Symptoms
Any line on a Purchase order that has been "Closed for Receiving" will be reopened if the PO is later re-approved. This differs from the results if the line is just Closed, where the lines will remain closed through all subsequent re-approvals.
The issue is seen regardless if the changes that caused the the re-approval touched the line or did not.
All Closed for Receiving lines are reopened upon submission for Approval again.
Cause
In pocup.lpc a condition is missing on the po_line_locations, to make sure that the commit only updates those records that are not already approved.
Solution- Apply Patch 5089729
- Updated key file: pocup.lpc - 115.10.11510.6
Version Check
strings -a $PO_TOP/bin/POXCON | grep '$Header' | grep pocup.lpc- Stop the PO Document Approval Manager
- Relink all PO executable:
1. Go to $AD_TOP/bin and relink the PO executable.
2. adrelink.sh force=y "PO ALL"
- Start the PO Document Approval Manager
- Retest issue
This patch is applicable only on top of oracle Applications Release 11.5.10 and/or Procurement Family Pack J.
References
BUG:5089729 - CLOSED PURCHASE orDER LINES ARE RE OPENED
BUG:6146142 - MANUALLY CLOSED FOR RECEIVING LINES OPENS UPON PO REAPPROVAL.
一点积累,与大家分享。欢迎指正.
《22条商规》读后感
作者:admin 日期:2010-08-19
工作太忙,每晚回家就想睡觉,也因此有过一段时间没看书了。唉,不看书总觉得心里少了点什么。这本书也买了好长时间了。还好,抽了点点时间看了一下。----搞得自己好像大人物一样,这么没时间,呵呵。
大师的书是不一样.把数千个案例精华浓缩成二十二点,感觉点点到位,恰到好处.感觉这是我看了《影响力》后的第二本比较实用的营销方面的书。虽然自己是搞技术的,但还是对营销比较感兴趣的。而里面有几个法则是我感受比较深的。
领先法则:成为第一胜过做得更好
如果一个产品不在行业里做到前三,那基本上就没有什么赚头了。在国内很多行业都是这样,基本上市场占有率都在排行老一老二,利润也有前三把持着,后面的只能是光烧钱赚吆喝的并不在少数。但令我感觉很奇怪的是:当一个新兴的产业刚打拼出来时,在国内几乎不用半年时间就要大批的企业争相挤进去。比如前些年的MP3,又比如现在的电纸书,大量的企业不计血本地为抢占市场而争得头破血流,这是为什么呢?为的是争到龙头老大的位置么?还是立志要在行业内占据一定的份额以图前面的人犯错?要做到在一个行业里,说到此行业就能想到自己的品牌,除了占得先机之外,还真得花费很巨大的财务在服务,品牌推广方面。正所谓打江山易,保江山难。尤其是在现在这种信息传递速度日趋发达的情形,成为第一也容易失去第一。感觉有点偏离了,呵呵。
属性法则:对于每一个属性而言,都会有一个对它的、有效的属性存在
只有自己的产品有某些别于同类产品的特性,才能让自己有与众不同的卖点。我觉得国内山寨手机真可是把手机的功能创新运用得极致,除去山寨机的质量不说,单是外观方面的千姿百态就让我感觉有点佩服。只有你想不到,没有说做不到的。有时看电视上的那些山寨手机广告,真是功能五花八门,形态各异,产品发布速度远高于国内一些品牌手机,真是有点NB呵呵。这也是一种特性吧。
聚焦法则:市场营销中最强有力的观念就是在潜在消费者心中拥有一个代表自己特色的词语
我个人感觉国内很少有很专注的大公司或大企业,我也个人觉得这不知是否与现在社会形态比较浮躁有关。只要有钱赚,我们就要进去。很典型的案例就是美D集团了,只要看到这个产品有利润,立马就上,以量为赢,以价格为开,到现在产品都做得让人害怕了,因为美D只要进来的行业或产品,几乎都要把市场做烂。当然,这也是与美D有强大的金钱后盾做支持了。可惜的是,美D的产品质量均不是很好,这是客户普遍的共识吧。
很少有像格力这样,一直做空调为主的企业。再看看联想,做手机,做电脑,还做软件销售。一堆的。不知这是不是跟法则的延伸结合应用的结果吧。Apple公司则是够聚焦了,只做几款产品,利润却超好,品牌形象也超NB。这可能就是聚集法则,精品战略吧。
坦诚法则:承认不足,消费者会发现你的长处
做人要本分,做企业也要本分。自己产品不行的地方要承认,不能以次充好,又假乱真。我想这是做企业做产品最基本的根本吧。
二十二条商规都是彼此联系,相互关联的,几乎很难单独罗列出一条来吹得天花乱坠,倒是国内有些咨询公司一直拿这二十二条商规为基底,到处口若悬河,夸夸其谈。呵呵。这书可以随时拿出来翻翻,想想。反正感觉还是很受益的。
1 领先法则:成为第一胜过做得更好
2 类别法则:如果你不能第一个进入某个类别,那么就创造一个类别使自己成为第一
3 观念法则:首先进入消费者心中要胜于首先进入市场
4 认知法则:市场营销并不是一场产品战,而是一场认知战
5 聚焦法则:市场营销中最强有力的观念就是在潜在消费者心中拥有一个代表自己特色的词语
6 专有法则:两个公司不可能在潜在消费者心中拥有同一个代名词
7 阶梯法则:采用何种营销战略取决于你站在阶梯的哪一级
8 二元法则:长远来看,每个市场都会呈现只有两匹马竞赛的格局
9 对立法则:如果你将目标锁定为市场第二,那么你的战略应由领先者决定
10 细分法则:一段时间后;一个产品类别将会进一步细分,并形成两个或更多的产品类别
11 长效法则:市场营销只有经过一段时期的运作才能显现其效果
12 延伸法则:总是有一种不可抗拒的压力迫使公司延伸品牌的产品线
13 牺牲法则:有所失,才能有所得
14 属性法则:对于每一个属性而言,都会有一个对它的、有效的属性存在
15 坦诚法则:承认不足,消费者会发现你的长处
16 独特法则:在每一种情况下,只有一种行动会产生显著的结果
17 不可测法则:除非是你在为对手制定计划,否则你无法预测未来
18 成功法则:成功常会导致自大,而自大则会导致失败
19 失败法则:失败是可以预料的,也是可以接受的
20 炒作法则:实际情况往往与媒体宣传的相反
21 加速法则:成功的营销计划不以时尚为依据,而以趋势为基础
22 资源法则:没有充足的资金,好想法不会成为现实
NPOI动态获取数据源绑定Gridview显示
作者:admin 日期:2010-08-10
第一次用这个东西,还是比较顺利,用起来也比较好 记录一下
1.引用
using NPOI;
using NPOI.HSSF;
using NPOI.DDF;
using NPOI.POIFS;
using NPOI.HSSF.UserModel;
using NPOI.HPSF;
using NPOI.POIFS.FileSystem;
2.主要代码
/// <summary>
/// 绑定数据
/// </summary>
protected void BindExcelData()
{
//先上传 再打开
HSSFWorkbook workbook = new HSSFWorkbook(this.fupFile.FileContent);
HSSFSheet sheet = workbook.GetSheetAt(0);
DataTable table = new DataTable();
HSSFRow headerRow = sheet.GetRow(0);
int cellCount = headerRow.LastCellNum;
//一定要对单元格类型作判断 否则会报错 cannot get a string value from a numeric cell
for (int i = headerRow.FirstCellNum; i < cellCount; i++)
{
if (headerRow.GetCell(i) == null || headerRow.GetCell(i).StringCellValue.Trim() == "")
{
// 如果遇到第一个空列,则不再继续向后读取
cellCount = i + 1;
break;
}
DataColumn column = new DataColumn(headerRow.GetCell(i).StringCellValue);
table.Columns.Add(column);
}
int rowCount = sheet.LastRowNum;
for (int i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; i++)
{
HSSFRow row = sheet.GetRow(i);
if (row == null || row.GetCell(0) == null || row.GetCell(0).ToString().Trim() == "")
{
// 如果遇到第一个空行,则不再继续向后读取
break;
}
DataRow dataRow = table.NewRow();
for (int j = row.FirstCellNum; j < cellCount - 1; j++)
{
if (row.GetCell(j) != null)
{
dataRow[j] = row.GetCell(j).ToString();
}
}
table.Rows.Add(dataRow);
}
//workbook = null;
//sheet = null;
this.gdvList.DataSource = table;
this.gdvList.AutoGenerateColumns = true;
this.gdvList.DataBind();
gdvList.DataKeyNames = new string[] { "IMEI" };
this.gdvList.PageSize = 20000;
lblCount.Text = gdvList.Rows.Count.ToString();
}
3.要注意的地方
NPOI对日期格式的转换,显示出来的日期不是我们常用的yyyy-MM-dd格式,需要做特殊判断
public static string ConvertDate(string date)
{
string[] orginDate = date.Trim().Split('-');
string year = orginDate[2].ToString().Trim();
string day = orginDate[1].ToString().Trim();
string month = orginDate[0].ToString().Trim();
if (day.Length == 1)
{
day = "0" + day.ToString();
}
if (month.Length == 1)
{
month = "0" + month.ToString().Trim();
}
if (year.Length == 2)
{
year = "20" + year.ToString().Trim();
}
return year + "-" + month + "-" + day;
}
1.引用
using NPOI;
using NPOI.HSSF;
using NPOI.DDF;
using NPOI.POIFS;
using NPOI.HSSF.UserModel;
using NPOI.HPSF;
using NPOI.POIFS.FileSystem;
2.主要代码
复制内容到剪贴板 程序代码
/// <summary>
/// 绑定数据
/// </summary>
protected void BindExcelData()
{
//先上传 再打开
HSSFWorkbook workbook = new HSSFWorkbook(this.fupFile.FileContent);
HSSFSheet sheet = workbook.GetSheetAt(0);
DataTable table = new DataTable();
HSSFRow headerRow = sheet.GetRow(0);
int cellCount = headerRow.LastCellNum;
//一定要对单元格类型作判断 否则会报错 cannot get a string value from a numeric cell
for (int i = headerRow.FirstCellNum; i < cellCount; i++)
{
if (headerRow.GetCell(i) == null || headerRow.GetCell(i).StringCellValue.Trim() == "")
{
// 如果遇到第一个空列,则不再继续向后读取
cellCount = i + 1;
break;
}
DataColumn column = new DataColumn(headerRow.GetCell(i).StringCellValue);
table.Columns.Add(column);
}
int rowCount = sheet.LastRowNum;
for (int i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; i++)
{
HSSFRow row = sheet.GetRow(i);
if (row == null || row.GetCell(0) == null || row.GetCell(0).ToString().Trim() == "")
{
// 如果遇到第一个空行,则不再继续向后读取
break;
}
DataRow dataRow = table.NewRow();
for (int j = row.FirstCellNum; j < cellCount - 1; j++)
{
if (row.GetCell(j) != null)
{
dataRow[j] = row.GetCell(j).ToString();
}
}
table.Rows.Add(dataRow);
}
//workbook = null;
//sheet = null;
this.gdvList.DataSource = table;
this.gdvList.AutoGenerateColumns = true;
this.gdvList.DataBind();
gdvList.DataKeyNames = new string[] { "IMEI" };
this.gdvList.PageSize = 20000;
lblCount.Text = gdvList.Rows.Count.ToString();
}
3.要注意的地方
NPOI对日期格式的转换,显示出来的日期不是我们常用的yyyy-MM-dd格式,需要做特殊判断
复制内容到剪贴板 程序代码
public static string ConvertDate(string date)
{
string[] orginDate = date.Trim().Split('-');
string year = orginDate[2].ToString().Trim();
string day = orginDate[1].ToString().Trim();
string month = orginDate[0].ToString().Trim();
if (day.Length == 1)
{
day = "0" + day.ToString();
}
if (month.Length == 1)
{
month = "0" + month.ToString().Trim();
}
if (year.Length == 2)
{
year = "20" + year.ToString().Trim();
}
return year + "-" + month + "-" + day;
}