ASP.NET MVC, направляющий по сравнению с зарезервированными именами файлов в Windows

Информация о часовом поясе браузера не является частью спецификации HTTP, поэтому вы не можете просто получить ее из заголовка.

Если у вас есть координаты местоположения (например, с мобильного устройства GPS), то вы можете найти часовой пояс , используя один из этих методов . Тем не менее, геолокация по IP-адресу не является хорошим решением, потому что часто это IP-адрес интернет-провайдера или прокси-сервера, который может находиться в другом часовом поясе.

Есть несколько стратегий, которые вы можете использовать для определения часового пояса, например, использование библиотеки jsTimeZoneDetect , которая является отличной отправной точкой, но достаточно несовершенна, чтобы вы не могли полагаться только на нее , Если вы используете moment.js, в моментной зоне есть встроенная функция moment.tz.guess(), которая делает то же самое.

Идея использования JavaScript-функции getTimezoneOffset() ошибочна в том, что вы не получаете часовой пояс - только одно смещение для конкретной даты. См. раздел вики-тега TimeZone под названием «TimeZone! = Offset».

Как ни крути, в конечном итоге вам нужно выбрать один из двух подходов:

ИЛИ

  • Отправлять время в браузер только в формате UTC и использовать JavaScript в браузере для преобразования в любой часовой пояс, для которого пользователь может настроить свой компьютер.

Я обсуждаю это более подробно (с точки зрения c #) в этот ответ .

39
задан Benjamin Pollack 12 June 2009 в 15:30
поделиться

4 ответа

Эта проблема устранена в 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>

Надеюсь, что это поможет.

36
ответ дан 27 November 2019 в 02:44
поделиться

Задав вопрос, я обнаружил, что ошибка связана с собственно ASP.NET, а не с IIS или ASP.NET MVC, а это означает, что ее невозможно обойти. Единственное решение - вручную запретить URL-адреса, соответствующие этим именам и этим именам, за которыми следует точка и случайные символы.

18
ответ дан 27 November 2019 в 02:44
поделиться

По той же причине в StackOverflow не может быть тега web.config .

http://stackoverflow.uservoice.com/pages/1722 -general / questions / 98871-web-config-tag-404-error

4
ответ дан 27 November 2019 в 02:44
поделиться

по другой аналогичной причине у вас не может быть URL с точкой и косой чертой. Семантические URL-адреса с точками в .net

0
ответ дан 27 November 2019 в 02:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: