隔了这么长时间,终于可以更新一下博客了,在一会儿去客户那里之前,喘口气的时间先说明一下这个坑爹的Framework4.5吧。

    本身这个项目没有什么难点,只是做了2个Ipad能够使用的Web画面到客户那里去了解一下客户的意见。结果客户看到了,就像直接使用。不知道那个脑残的领导竟然一口同意了,直接就在服务器上搭建环境,让客户试用。

     领导说话,只能照做,于是就在Windows server2008的环境下,下载了SQLServer Express按上数据库,然后装上了IIS7.5和.NET的Framework4.0。

    本身客户的服务器是不允许重启机器的,正好我们赶在中午时间,服务器可以停1个小时,我和一个同事忙忙呼呼的把环境装完,就在这个时候,又不知道那个糊涂领导,竟然点了windows Update,让系统更新。后来就是漫长的等待了,服务器重启更新,整整花了3个小时。只剩下我们不停的跟客户道歉了。

   道歉的事情先不说了,3个小时后,终于服务器启动了,IPad的页面也能正常打开了。就在我们以为OK了,准备打道回府的时候,悲剧发生了。

    IPad的页面在wifi不能正常连接的时候,重新打开页面的时候,页面控件发生变形。主要是.NET的控件发生变形,查看Ipad上的代码,控件样式和实践代码都没有写入HTML。

   难道是IIS的问题,重新配置IIS,设置Session超时时间,重新刷新。变形的画面依然屹立在那里。怎么办,怎么办?先跟客户说一下,页面还没有完成,测试也没有完成,所以出现bug了。但是客户说就是想做练习,试用这个。再百般无奈下,答应客户隔一天,sourse完成后,再重新发布一般再做练习。客户也同意了。

   回去后,感觉这个bug没有这么简单,原因在那里无法调查。因为同样的画面,在PC机上操作,完全没有问题。而且,回到公司后,此现象无法再现。于是先把sourse完成后再说吧。

   就这样,再完成sourse后,第三天给客户实施的时候,此问题又在客户的IPAD上出现了。这下真没有主意了。在PC机上测试,IE,Chrome,Safari都没有问题。IPhone同样没有问题,只是在Ipad上出现。后来在IPhone上装了个Chrome,出现同样的控件变形情况。

   后来在彻底无语的情况下,跟客户道歉,回公司继续研究。为了能够在公司重现现象,装了一台与客户服务器一样的环境。终于在这个时候,公司也重现了BUG。

   能够重现,就有机会研究。IIS的配置,Source代码,升级补丁一点点检查,依然没有任何起劲。后来在同事的启发下(他开发的帐票是ReportViewer11的,发布之后,他.NET4.0不支持,Web.Config一直失败,其实是其他原因),公司不能再现的两台机器是开发机器发布的,用的是VS2012,默认的.NET Framework是4.5的,虽然我们发布是时候使用了4.0编译,但是本身环境是4.5的。难道是4.5的原因。于是2步走,先将项目抑制到VS2010中,并且只有4.0的环境中,编译发布,控件变形。将环境升级到.NETframework4.5,问题解决。原来真是FW4.5的问题啊。

   后来到微软网站上确认.NET FW 4.5的功能时,有这么一段解释。

  Web

ASP.NET 4.5 には次の新機能があります。

  • 新しい HTML5 フォームの種類のサポート。

  • Web フォームでのモデル バインダーのサポート。 これらを使用することで、データ アクセス メソッドに直接データ コントロールをバインドし、.NET Framework データ型とユーザー入力を相互に自動変換できるようになります。

  • クライアント側の検証スクリプトにおける控え目な JavaScript のサポート。

  • バンドルや縮小などを通じてクライアント スクリプトの処理を向上させることによるページ パフォーマンスの改善。

  • AntiXSS ライブラリ (これまでの外部ライブラリ) からのエンコード ルーチンを統合して、クロスサイト スクリプティングの攻撃から身を守ります。

  • WebSockets プロトコルのサポート。

  • HTTP 要求と応答の非同期の読み取り、書き込みのサポート。

  • 非同期モジュールとハンドラーのサポート。

  • ScriptManager コントロールのコンテンツ配信ネットワーク (CDN) のフォールバックのサポート。

 具体参照

     http://msdn.microsoft.com/ja-jp/library/vstudio/ms171868.aspx#web

 

后面补充一下要使用VS2012下的ReportViewer时,在服务器上要安装2个环境

1)SQLSysClrTypes.msi (这个是For Sqlserver 2012的)

2)ReportViewer.msi