Обработка исключения C # WebService - PullRequest
2 голосов
/ 28 мая 2009

Когда я генерирую исключение в моем C # WebService (SoapException с реальным исключением как внутреннее исключение), клиент получает исключение со следующим сообщением. Могу ли я подавить все содержимое HTML и просто отправить исключение с сообщением, которое я хочу.

Это не полное сообщение, только часть, от которой я не хочу избавляться.

<code>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>

Примечания: Текущая страница ошибки, которую вы видите, может быть заменена пользовательской страницей ошибок, изменив атрибут defaultRedirect тега конфигурации приложения, чтобы он указывал на URL-адрес пользовательской страницы ошибок.
<!-- Web.Config Configuration File --> <configuration> <system.web> <customErrors mode="On" defaultRedirect="mycustompage.htm"/> </system.web> </configuration>

Ответы [ 2 ]

1 голос
/ 28 мая 2009

Зависит от того, что если вы используете 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"));
0 голосов
/ 28 мая 2009

Я не думаю, что вы получаете ошибку, о которой вы думаете. Похоже, ваш клиент не может подключиться к вашему сервису и получить ошибку веб-страницы, взяв этот html и заключив его в мыльное исключение. Поскольку ваш веб-сервис недоступен, вы ничего не можете сделать в коде, чтобы справиться с ним. Можете ли вы успешно загрузить свой WSDL в браузер?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...