【问题标题】:How to handle Error 500 coming back from asmx service如何处理从 asmx 服务返回的错误 500
【发布时间】:2011-01-10 11:04:40
【问题描述】:

我有一个不允许 GET 的标准 asmx 服务。

如果我在浏览器 (GET) 中访问 asmx http://mysite/myservice.asmx/myoperation,我会收到一个刷新到客户端的堆栈跟踪,我可以从 fiddler 看到这是一个 500 内部系统错误。我的代码都没有被命中。

如果从浏览器访问 url,我要求不显示堆栈跟踪,所以我想重定向到我已有的自定义错误页面。

我在 global.asax 上有一个 Application_Error,但在这个特定的实例中它没有启动。

任何帮助表示赞赏!

【问题讨论】:

    标签: web-services asmx custom-errors


    【解决方案1】:

    如果您通过禁用 GET 请求会发生什么

    <configuration>
       <system.web>
          <webServices>
             <protocols>
                <remove name="HttpPost"/>
                <remove name="HttpGet"/>
                <remove name="Documentation"/>
             </protocols>
          </webServices>
       </system.web>
    </configuration>
    

    【讨论】:

    • 嗯,有趣的是,如果我按照您的建议在 web.config 中删除 GET 则它可以工作(转到错误页面),但我不能在那里这样做,因为其他一些服务需要允许获取
    • 我可以在服务级别而不是应用级别做类似的事情吗?
    • @JohnIdol:您可以将 SOAP 服务放在更深的文件夹下,并将上述内容放在该文件夹中的 web.config 中(或使用 &lt;location&gt; 元素指定上述内容仅适用于子文件夹)。
    • 好的,这是一个选项。知道为什么 会导致 global.asax 上的 Application_Error 方法捕获错误 500?我在 webmethod 级别尝试使用“UseHttpGet = true”,但效果不一样。很奇怪。
    • @John:不知道。我非常努力地不再使用 ASMX 服务。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    相关资源
    最近更新 更多