c# - 处理 C# WebService 异常

标签 c# web-services exception

当我在我的 C# WebService 中抛出异常(SoapException,真正的异常作为内部异常)时,客户端收到异常并显示以下消息。我可以禁止所有 HTML 内容,只发送包含我想要的消息的异常吗?

这不是完整的消息,只是我不想删除的部分。

The request failed with the error message:
--
<html>
    <head>
        <title>Runtime Error</title>
        <style>
         body {font-family:"Verdana";font-weight:normal;font-size: .7em;color:black;} 
         p {font-family:"Verdana";font-weight:normal;color:black;margin-top: -5px}
         b {font-family:"Verdana";font-weight:bold;color:black;margin-top: -5px}
         H1 { font-family:"Verdana";font-weight:normal;font-size:18pt;color:red }
         H2 { font-family:"Verdana";font-weight:normal;font-size:14pt;color:maroon }
         pre {font-family:"Lucida Console";font-size: .9em}
         .marker {font-weight: bold; color: black;text-decoration: none;}
         .version {color: gray;}
         .error {margin-bottom: 10px;}
         .expandable { text-decoration:underline; font-weight:bold; color:navy; cursor:hand; }
        </style>
    </head>

    <body bgcolor="white">

            <span><H1>Server Error in '/MyWeb.Service' Application.<hr width=100% size=1 color=silver></H1>

            <h2> <i>Runtime Error</i> </h2></span>

            <font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif ">

            <b> Description: </b>An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed.
            <br><br>

            <b>Details:</b> To enable the details of this specific error message to be viewable on the local server machine, please create a <customErrors> tag within a "web.config" configuration file located in the root directory of the current web application. This <customErrors> tag should then have its "mode" attribute set to "RemoteOnly". To enable the details to be viewable on remote machines, please set "mode" to "Off".<br><br>

            <table width=100% bgcolor="#ffffcc">
               <tr>
                  <td>
                      <code><pre>

<!-- Web.Config Configuration File -->

<configuration>
    <system.web>
        <customErrors mode="RemoteOnly"/>
    </system.web>
</configuration></pre></code>

                  </td>
               </tr>
            </table>

            <br>

            <b>Notes:</b> The current error page you are seeing can be replaced by a custom error page by modifying the "defaultRedirect" attribute of the application's <customErrors> configuration tag to point to a custom error page URL.<br><br>

            <table width=100% bgcolor="#ffffcc">
               <tr>
                  <td>
                      <code><pre>

<!-- Web.Config Configuration File -->

<configuration>
    <system.web>
        <customErrors mode="On" defaultRedirect="mycustompage.htm"/>
    </system.web>
</configuration></pre></code>

                  </td>
               </tr>
            </table>

            <br>

    </body>
</html>

最佳答案

视情况而定,如果您使用的是 WCF,则可以定义自定义异常。您希望客户端看到的所有异常都必须是 FaultException 类型。

您的自定义异常如下所示:

    [DataContract]
    public class CustomFault
    {
       public CustomFault()
       {
       }

        public CustomFault(string message)
        {
            Message = message;
        }

        [DataMember]
        public string Message { get; private set; }
    }

然后您像这样抛出自定义异常:

throw new FaultException<CustomFault>(new CustomFault("your custom message"));

关于c# - 处理 C# WebService 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/921436/

相关文章:

c# - 在 Azure 中使用特定于时间的计时器

c# - 使用 Javascript 突出显示文本框中的文本

c# - 具有多个参数的转换器

c# - 调用设计器构建的事件处理程序

language-agnostic - 异常层次结构真的有用吗?

Java 抛出错误并捕获 NullPointerException

c# - WCF 客户端/Java Web 服务 - 反序列化对象为空

jquery - 是否可以更改 JSON 中的页面 webmethod 响应,删除 .d 节点?

web-services - REST API 设计 : different granularity for receiving and updating resources

java - 自定义异常-Java