2

When I throw an exception in my C# WebService (SoapException with the real exception as inner exception) the client recieves an exception with the following message. Can I supress all the HTML stuff and just send the exception with the message I want.

This is not the full message, only the part that I wan't to get rid of.

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>

2 Answers 2

1

It depends, if you're using WCF you can define a custom exception. All exceptions that you want your client to see must be of the type FaultException.

Your custom exception would look like this:

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

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

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

and you throw your custom exception like this:

throw new FaultException<CustomFault>(new CustomFault("your custom message"));
Sign up to request clarification or add additional context in comments.

Comments

0

I don't think you're getting the error you're thinking. It looks like your client isn't able to hit your service and getting a web page error, taking that html and wrapping it in a soap exception. Since your web service isn't accessable, there's nothing you can do in code to handle it. Can you load up your WSDL in a browser successfully?

6 Comments

The exception is created and thrown by the WebService. And it is a SoapException.
Joshua is correct. Sending exceptions obviously works, or the feature would have been fixed in the last seven years or so. Something else is wrong.
@crascher: ASMX web services do not return HTML instead of SOAP Faults. I guarantee it.
Do what the error says, turn off custom errors and you'll see what the error is.
As I said, it is not the whole exception message, only a part of it. Due to the reason that I have to display the exception message in a message box the whole html stuff makes the message big. That's why I want to get rid of it. An I throw a soapexception on the server side and only take the message on the client side out the incoming exception and display it.
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.