防止跨请求更改全球化区域性

本文关键字:全球化 区域性 请求 | 更新日期: 2023-09-27 18:35:40

  • WebForms, .NET 4.61

我遇到了日期未从字符串转换的问题。

public dsBookingActual GetBookingActualData(Int64 ozBookingID, string consultant, string screenViewed)
{
            DbCommand dbCommand = db.GetStoredProcCommand("usp_GetBookingActualData");
            db.AddInParameter(dbCommand, "@OzBookingID", DbType.Int64, ozBookingID);
            db.AddInParameter(dbCommand, "@Consultant", DbType.String, consultant);
            db.AddInParameter(dbCommand, "@ScreenViewed", DbType.String, screenViewed);
            dsBookingActual dsBA = new dsBookingActual();
            //LoadDataSet fails when the date is 29/01/2016
            db.LoadDataSet(dbCommand, dsBA, new string[] { Constant.BOOKING_ACTUAL, "Passengers" });
            return dsBA;
}
我们在 AU 中,因此日期格式为 dd/mm/yyyy,

转换日期 29/01/2016 失败,因为它被尝试为 mm/dd/yyyy,例如 29 不是有效的月份。

我追踪到这样一个事实,即浏览器中的语言设置设置为美国与这篇文章类似。

我们在system.web中有一个globailzation标签,如下所示:

<globalization culture="en-AU" requestEncoding="utf-8" responseEncoding="utf-8" uiCulture="en-AU" />

所以我的问题是我如何防止整个请求中的文化发生变化。我猜它涉及不确认或处理"HTTP 请求中的接受语言标头",但我不确定如何实现这一点。

任何指示赞赏。

防止跨请求更改全球化区域性

事实证明,这个问题是由于我们使用ASP样板的结果。框架没有任何问题,是我们使用它导致了问题。