【发布时间】: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