Orchard CMS: файл Javascript возвращает 404 не найден, даже если он существует - PullRequest
6 голосов
/ 15 марта 2012

У меня в представлении Razor есть следующее для шаблона редактора в моем модуле Orchard:

Script.Include("assets.js").AtFoot();

Когда страница отображается, я вижу эту строку внизу:

<script src="/Modules/MyModuleName/scripts/assets.js" type="text/javascript"></script>

Красивая! Единственная проблема в том, что при посещении этого пути я получаю ошибку 404. Скрипт не существует.

... но это так! Сохраняется как Orchard.Web\Modules\MyModuleName\Scripts\assets.js

Остальная часть функциональности моего модуля работает нормально - я могу включить и использовать его, он просто не найдет файл скрипта. Я что-то упускаю здесь очевидное?!

Ответы [ 2 ]

8 голосов
/ 15 марта 2012

По умолчанию Orchard настроен на ограничение разрешений для папок.Обычно это переопределяется добавлением web.config в каждую папку по мере необходимости (в данном случае, в папку ваших скриптов).

Если вы используете модуль codegen для генерации вашего модуля, то это делается для вас как частьпоколения.Если нет, то вам нужно добавить файл web.config самостоятельно.

Кодированный web.config выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <appSettings>
    <add key="webpages:Enabled" value="false" />
  </appSettings>
  <system.web>
    <httpHandlers>
      <!-- iis6 - for any request in this location, return via managed static file handler -->
      <add path="*" verb="*" type="System.Web.StaticFileHandler" />
    </httpHandlers>
  </system.web>
  <system.webServer>
    <staticContent>
      <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" />
    </staticContent>

    <handlers accessPolicy="Script,Read">
      <!--
      iis7 - for any request to a file exists on disk, return it via native http module.
      accessPolicy 'Script' is to allow for a managed 404 page.
      -->
      <add name="StaticFile" path="*" verb="*" modules="StaticFileModule" preCondition="integratedMode" resourceType="File" requireAccess="Read" />
    </handlers>
  </system.webServer>
</configuration>
2 голосов
/ 13 марта 2013

Я нашел другую причину для этого 404, которую я хотел бы упомянуть. UrlScan по умолчанию отклоняет точку в пути, я нашел это в своем журнале: Отклоненный URL + содержит + точку + в + пути

Поэтому измените настройку в:

AllowDotInPath=1

и снова работает. Мне понадобилось некоторое время, чтобы найти это, потому что я никогда не использую точку в пути ...

...