Информация о часовом поясе браузера не является частью спецификации HTTP, поэтому вы не можете просто получить ее из заголовка.
Если у вас есть координаты местоположения (например, с мобильного устройства GPS), то вы можете найти часовой пояс , используя один из этих методов . Тем не менее, геолокация по IP-адресу не является хорошим решением, потому что часто это IP-адрес интернет-провайдера или прокси-сервера, который может находиться в другом часовом поясе.
Есть несколько стратегий, которые вы можете использовать для определения часового пояса, например, использование библиотеки jsTimeZoneDetect , которая является отличной отправной точкой, но достаточно несовершенна, чтобы вы не могли полагаться только на нее , Если вы используете moment.js, в моментной зоне есть встроенная функция moment.tz.guess()
, которая делает то же самое.
Идея использования JavaScript-функции getTimezoneOffset()
ошибочна в том, что вы не получаете часовой пояс - только одно смещение для конкретной даты. См. раздел вики-тега TimeZone под названием «TimeZone! = Offset».
Как ни крути, в конечном итоге вам нужно выбрать один из двух подходов:
ИЛИ
Я обсуждаю это более подробно (с точки зрения c #) в этот ответ .
Эта проблема устранена в ASP.NET 4. http://haacked.com/archive/2010/04/29/allowing-reserved -filenames-in-URLs.aspx
Вы можете применить параметр в web.config, который снимает это ограничение.
<configuration>
<system.web>
<httpRuntime relaxedUrlToFileSystemMapping="true"/>
<!-- ... your other settings ... -->
</system.web>
</configuration>
Надеюсь, что это поможет.
Задав вопрос, я обнаружил, что ошибка связана с собственно ASP.NET, а не с IIS или ASP.NET MVC, а это означает, что ее невозможно обойти. Единственное решение - вручную запретить URL-адреса, соответствующие этим именам и этим именам, за которыми следует точка и случайные символы.
По той же причине в StackOverflow не может быть тега web.config
.
http://stackoverflow.uservoice.com/pages/1722 -general / questions / 98871-web-config-tag-404-error
по другой аналогичной причине у вас не может быть URL с точкой и косой чертой. Семантические URL-адреса с точками в .net