当我在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>
答案 0 :(得分:1)
这取决于,如果您使用的是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"));
答案 1 :(得分:0)
我认为你没有得到你所想的错误。看起来您的客户端无法访问您的服务并收到网页错误,将该html包装在soap异常中。由于您的Web服务不可访问,因此您无法在代码中执行任何操作。你能成功地在浏览器中加载你的WSDL吗?