2

Servicestack.Razorを使用してビューを作成しました。ビューページで、次のコードを使用してセッションを取得しようとしています。

var session = GetSession<AuthUserSession>().ToJson();

このコードをビュー ページに配置すると、次のエラーが発生します。

System.TimeZoneNotFoundException
Exception of type 'System.TimeZoneNotFoundException' was thrown.

Description: HTTP 500.Error processing request.
Details: Non-web exception. Exception origin (name of application or object): mscorlib.

スタック トレースは次のとおりです。

Exception stack trace:
      at System.TimeZoneInfo.get_Local () [0x00000] in <filename unknown>:0 
      at ServiceStack.Text.Common.DateTimeSerializer..cctor () [0x00000] in <filename unknown>:0 

これは のバグServicestack.Textですか? どうすればこれを解決できますか?

注: Ubuntu 12.10 で Mono 3.0.10 を使用しています。

4

3 に答える 3

1

プロジェクトの作業中に、この同じエラーが発生していました。私の場合、適切にエクスポートされた TZ 環境変数がなかったためです。UI init シェル スクリプトに以下を追加する必要がありました。

read TZ 2>/dev/null < /etc/timezone
export TZ
于 2016-02-09T22:17:55.323 に答える
0

.NET Core は、タイムゾーン関連の操作を OS に委ねます。残念ながら、Windows と Linux のタイムゾーン名は異なります。必要に応じて、 TimeZoneConverterを使用してそれらを変換します。

if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
    timeZoneName = TZConvert.WindowsToIana(timeZoneName);
}
var zoneInfo = TimeZoneInfo.FindSystemTimeZoneById(timeZoneName);
于 2018-05-03T09:13:55.117 に答える