【问题标题】:Date format issue between ssl & non-ssl site. IIS & asp.netssl 和非 ssl 站点之间的日期格式问题。 IIS 和 asp.net
【发布时间】:2017-06-07 07:58:24
【问题描述】:

IIS 10 , Windows Server 2016

我有一个奇怪的问题,我发现很难诊断..

我有一个使用 SSL 的网站。

我有相同的网站代码库,它在同一台服务器上,但在不同的端口上,但不在 ssl 上。

现在: 1) 从普通网站当我发送日期为 23/06/2017 时。它正在以我想要的格式正确保存。

2) 但是,从 ssl 网站,当我发送日期为 23/06/2017 时,我收到此错误。

将数据类型 nvarchar 转换为日期时间时出错。

我需要一些关于如何诊断此问题的帮助。唯一的区别是存在 ssl 证书。

此代码的结果将作为参数发送到存储过程。

DateTime.ParseExact("23/06/2017", "d/M/yyyy", null).ToString("MM/dd/yyyy")

【问题讨论】:

  • 两个站点是否指向同一个数据库?如果不是,您确定数据库相同吗?有两件事可能不同——存储过程可能不同,因此参数也不同。或者可能语言环境可能不同。错误是关于将 nvarchar 转换为日期时间。 nvarchar 通常是一种 SQL 数据类型。您转换为格式为 'MM/dd/yyyy' 的字符串,并将其传递给 proc。如果数据库的语言环境预期为“dd/mm/yyyy”,它将阻塞,因为 23 不是有效月份。
  • 在未来将日期作为日期传递给存储过程。无需将它们作为字符串 (varchar) 传递。
  • @GregHNZ 是的,他们都使用同一个数据库。语言环境不能不同,因为它是具有相同凭据的相同数据库。也使用相同的代码库。我只是将 ssl 站点复制到非 ssl 端口
  • @evk 同意了。但我正在使用 Parameters.AddWithValue() 函数。所以转换应该默认发生..
  • 在处理可能的不同文化时,为什么不首先使用 ISO 8601 日期格式将 DateTime 传递给存储过程?这是最强大的方式,适用于任何区域格式。也许你应该看这个:stackoverflow.com/questions/7957616/….

标签: c# asp.net sql-server sql-server-2016 iis-10


【解决方案1】:

这实际上不应该被称为答案。它只是一个补丁。 根据 cmets,我删除了 .ToString & 现在我的代码看起来像。

DateTime.ParseExact("23/06/2017", "d/M/yyyy", null)

相同的代码库指向相同的数据库和相同的服务器中的相同存储过程,仅在 ssl 上有所不同。这需要搜索..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-19
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多