開発サーバーではなくテストサーバーでクラッシュするコードがあります。私は開発者とテストのための2つのWindows 2012R2サーバーを持っています。どちらも同じパッチレベルで、同じ.NET FrameWorkバージョン。現在のユーザーとシステムローカルの両方で同じ地域設定(オランダ語)を持っています。このオランダの設定には、日付セパレータとして - があります。次のコードスニペットは、devサーバー上で動作しますが、テストサーバーでクラッシュします。私はコンソールアプリケーションで2行のコードでスニペットを追加し、エラーを再現することができます。DateTime ParseExact他のサーバーでの動作が異なります
(デモコンソールアプリケーションのために簡略化)コードの一部です:
string date = "28/02/2017";
DateTime dateDate = DateTime.ParseExact(date, "dd/MM/yyyy", null);
だから、これは私が変更した場合、私は
Unhandled Exception: System.FormatException: String was not recognized as a vali
d DateTime.
at System.DateTimeParse.ParseExact(String s, String format, DateTimeFormatInf
o dtfi, DateTimeStyles style)
at System.DateTime.ParseExact(String s, String format, IFormatProvider provid
er)
この例外を取得し、私のdevのサーバー上で動作し、テスト に墜落しましたコードへの
string date = "28/02/2017";
DateTime dateDate = DateTime.ParseExact(date, "dd/MM/yyyy", CultureInfo.InvariantCulture);
両方のサーバーで動作します。コンソールアプリケーションでCurrentCultueとCurrentUiCultureを出力すると、両方のサーバーで同じです。
私のテストサーバーで何が問題になるのでしょうか? ParseExactメソッドでnullを渡すと、CurrentCultureを使用して日付分離器/エラーが発生するはずであるため、コードが自分のdevserverでもクラッシュすることが予想されます。
よろしく ダニー
*テストサーバー上のクラッシュ*それは何を意味するのでしょうか?どのような例外がありますか? – DavidG
とにかく日付を解析するためのカルチャを指定する必要があります – slawekwin