Как справиться с ошибкой 500, возвращающейся из службы asmx

У меня есть стандартная служба asmx, для которой GET не разрешен.

Если я посещаю asmx http://mysite/myservice.asmx/myoperation в браузере (GET), я получаю трассировку стека, сброшенную на клиент, и я вижу из скрипача, что это внутренняя системная ошибка 500. Ни один из моих кодов не срабатывает.

У меня есть требование не показывать трассировку стека, если URL-адрес посещается из браузера, поэтому я хотел бы перенаправить на пользовательскую страницу ошибки, которая у меня есть.

У меня есть ошибка Application_Error в global.asax, но в этом конкретном случае она не срабатывает.

Любая помощь приветствуется!


person JohnIdol    schedule 10.01.2011    source источник


Ответы (1)


Что произойдет, если вы отключите запросы GET через

<configuration>
   <system.web>
      <webServices>
         <protocols>
            <remove name="HttpPost"/>
            <remove name="HttpGet"/>
            <remove name="Documentation"/>
         </protocols>
      </webServices>
   </system.web>
</configuration>
person John Saunders    schedule 10.01.2011
comment
ммм, интересно, если я удалю GET в web.config, как вы предлагаете, тогда он сработает (перейдет на страницу с ошибкой), но я не могу сделать это там, потому что некоторые другие службы должны разрешать GET - person JohnIdol; 10.01.2011
comment
могу ли я сделать что-то подобное на уровне службы, а не на уровне приложения? - person JohnIdol; 10.01.2011
comment
@JohnIdol: вы можете поместить службы SOAP в более глубокую папку и поместить вышеуказанное в web.config в этой папке (или использовать элемент <location>, чтобы указать, что вышеуказанное применяется только к подпапке). - person John Saunders; 10.01.2011
comment
ок это вариант. есть идеи, почему ‹remove name=HttpGet/› заставляет метод Application_Error в global.asax перехватывать ошибку 500? Я пробовал с «UseHttpGet = true» на уровне веб-метода, но это не дает такого же эффекта. странный. - person JohnIdol; 10.01.2011
comment
@Джон: без понятия. Я очень стараюсь больше не пользоваться услугами ASMX. - person John Saunders; 10.01.2011
comment
Да, я тоже. нашел его на месте и должен иметь дело с ним. - person JohnIdol; 10.01.2011