обработчики http не работают на веб-сервере, но работают на localhost - PullRequest
2 голосов
/ 16 марта 2010

В моем веб-приложении asp.net есть несколько файлов xml, к которым я не хочу, чтобы кто-либо имел доступ, кроме моего кода на стороне сервера. это то, что я пытался ..

<add verb="*" path="*.xml" type="System.Web.HttpForbiddenHandler" />

я написал это внутри

это хорошо работает на локальном хосте, но не на сервере ... сервер без каких-либо колебаний отображает файл XML ... я не знаю, как поступить ...

спасибо заранее ..:)

Обновление : на сервере установлен IIS6, Windows Server 2003

Ответы [ 5 ]

2 голосов
/ 16 марта 2010

Вы должны проверить, какие другие обработчики активны на сервере и могут повлиять на файлы .xml, включая общие, такие как <add verb="*" path="*" ...

Также проверьте конфигурацию сервера, как указано здесь: Элемент httpHandlers (схема настроек ASP.NET)

В Microsoft Internet Information Services (IIS) есть своя собственная модель для сопоставления расширений с ISAPI. Чтобы сопоставление между данным расширением приложения и его обработчиком вступило в силу, расширение должно быть сопоставлено в IIS с ASP.NET ISAPI. Для нестандартных расширений, таких как пользовательские, необходимо соответствующим образом настроить IIS.

ОБНОВЛЕНИЕ: Защита файлов с помощью ASP.NET

2 голосов
/ 16 марта 2010

Вы можете поместить их в специальный каталог App_Data. Файлы внутри этой папки не обслуживаются.

1 голос
/ 16 марта 2010

IIS 6 и встроенный в веб-сервер Visual Studio регистр несколько отличается от IIS 7. Если на вашем хосте работает IIS 7, вам может потребоваться добавить вашу регистрацию в узел <system.WebServer> в файле Web.config.

<system.webServer>
  <handlers>
    <add ... />
  </handlers>
</system.webServer>
0 голосов
/ 28 июня 2016

я тоже сталкивался с подобной проблемой. На моем локальном хосте операции crud работают нормально и отображают данные в сетке, но не работают с размещенным URL в виртуальной машине, которая ведет себя странно, вызвать: Я вызывал обработчики один за другим, например, после сохранения в обратном вызове я снова вызывал еще один обработчик для отображения данных в сетке, в этих двух вызовах сохранение происходит правильно, но обработчик отображения не срабатывал только в fiddler. Соль: Поэтому я попытался отправить данные в формате сериализации в обратном вызове сохранения для отображения, это решило мою проблему, это просто быстрое решение, не знаю, почему именно оно не работает.

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

0 голосов
/ 16 марта 2010

Как насчет использования тега <location>?

<configuration>
   <location path="something.xml">
      <system.web>
         <authorization>
            <deny users="*"/>
         </authorization>
      </system.web>
   </location>
</configuration>
...