首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ViewPage上使用ServiceStack.Razor的System.TimeZoneNotFoundException

在ViewPage上使用ServiceStack.Razor的System.TimeZoneNotFoundException
EN

Stack Overflow用户
提问于 2013-08-23 13:01:09
回答 3查看 1.6K关注 0票数 2

我已经在视图页面上使用Servicestack.Razor.创建了一个视图,我正在尝试使用以下代码获取会话。

代码语言:javascript
复制
var session = GetSession<AuthUserSession>().ToJson();

当我把这段代码放到视图页面上时,我得到了以下错误:

代码语言:javascript
复制
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.

StackTrace如下:

代码语言:javascript
复制
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

EN

回答 3

Stack Overflow用户

发布于 2016-02-10 06:17:55

我在处理一个项目时也遇到了同样的错误。在我的例子中,这是因为我没有正确导出的TZ环境变量。我不得不将以下内容添加到我的UI init shell脚本中:

代码语言:javascript
复制
read TZ 2>/dev/null < /etc/timezone
export TZ
票数 1
EN

Stack Overflow用户

发布于 2013-10-25 07:26:05

Mono有一个已知且由来已久的Timezone bug that affects Windows,但只要TimeZone数据库安装在/usr/share/zoneinfo中,它就应该可以在Linux中工作。但是,如果我尝试序列化日期,这与我在Windows中得到的错误完全相同,所以这会让我认为由于某种原因,/usr/share/zoneinfo不合适。

如果不存在,Comment 6中的变通方法可能会对您有所帮助。但是,我认为你必须从源代码构建ServiceStack.Text,这样你才能应用变通方法。

在/usr/share/zoneinfo中创建指向实际安装位置的符号链接可能更容易。

票数 0
EN

Stack Overflow用户

发布于 2018-05-03 17:13:55

Windows遵循操作系统进行与时区相关的操作,不幸的是,.NET和Linux有不同的时区名称。如果需要,可以使用TimeZoneConverter在它们之间进行转换。

代码语言:javascript
复制
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
    timeZoneName = TZConvert.WindowsToIana(timeZoneName);
}
var zoneInfo = TimeZoneInfo.FindSystemTimeZoneById(timeZoneName);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18395018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档