I have a server side action that looks like this:
namespace MyProduct.Presentation.Controllers
{
public class FooController : Controller
{
public ActionResult Delete(long[] fooIds)
{
throw new Exception("Something went wrong.");
}
}
}
I make an ajax request to this controller from the client like so:
var url = '/Foo/Delete';
$.ajax(url,
{
cache: false, async: false, type: 'POST',
data: JSON.stringify({ fooIds: fooIdsArray }), dataType: 'json',
contentType: 'application/json', traditional: true,
error: OnError, success: OnSuccess
});
function OnSuccess(data, textStatus, jqXHR) {
debugger;
}
function OnError(jqXHR, textStatus, errorThrown) {
debugger;
// Here, I want the text "Something went wrong",
// which I set as the Message property
// of my server side exception
}
How do I get the text set as the Message
property of the Exception
object that was raised on the server?
The client, in this case, receives an HTML response with the HTTP Status Code 500. So, I see in Fiddler that my response looks like so:
HTTP/1.1 500 Internal Server Error
Server: ASP.NET Development Server/10.0.0.0
Date: Wed, 11 Dec 2013 07:47:26 GMT
X-AspNet-Version: 4.0.30319
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Length: 10175
Connection: Close
<!DOCTYPE html>
<html>
<head>
<title>Could not delete category. This category has data associated with it. Please delete the associated data first.</title>
<meta name="viewport" content="width=device-width" />
<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:"Consolas","Lucida Console",Monospace;font-size:11pt;margin:0;padding:0.5em;line-height:14pt}
.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; }
@media screen and (max-width: 639px) {
pre { width: 440px; overflow: auto; white-space: pre-wrap; word-wrap: break-word; }
}
@media screen and (max-width: 479px) {
pre { width: 280px; }
}
</style>
</head>
<body bgcolor="white">
<span><H1>Server Error in '/' Application.<hr width=100% size=1 color=silver></H1>
<h2> <i>Could not delete category. This category has data associated with it. Please delete the associated data first.</i> </h2></span>
<font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif ">
<b> Description: </b>An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
<br><br>
<b> Exception Details: </b>System.Exception: Could not delete category. This category has data associated with it. Please delete the associated data first.<br><br>
<b>Source Error:</b> <br><br>
<table width=100% bgcolor="#ffffcc">
<tr>
<td>
<code><pre>
Line 66: }
Line 67:
<font color=red>Line 68: throw new Exception(errorMessage);
</font>Line 69: }
Line 70: catch</pre></code>
</td>
</tr>
</table>
<br>
<b> Source File: </b> C:\Sathyaish\Clients\ESQ\SVN\GlobalizationUI.Presentation\Controllers\CategoryController.cs<b> Line: </b> 68
<br><br>
<b>Stack Trace:</b> <br><br>
<table width=100% bgcolor="#ffffcc">
<tr>
<td>
<code><pre>
[Exception: Could not delete category. This category has data associated with it. Please delete the associated data first.]
MyProduct.Presentation.Controllers.CategoryController.Delete(Int64[] categoryIds) in yada yada yada
</pre></code>
</td>
</tr>
</table>
<br>
<hr width=100% size=1 color=silver>
<b>Version Information:</b> Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.18055
</font>
</body>
</html>
<!--
[Exception]: Could not delete category. This category has data associated with it. Please delete the associated data first.
at MyProduct.Presentation.Controllers.CategoryController.Delete(Int64[] categoryIds) in ...yada yada yada...