Handle Exception (#13)

This commit is contained in:
Stef Heyenrath
2017-01-19 23:33:40 +01:00
parent 95b93e80ce
commit 68f3a2ff76
3 changed files with 34 additions and 18 deletions

View File

@@ -249,21 +249,33 @@ namespace WireMock
var request = _requestMapper.Map(ctx.Request);
LogRequest(request);
var targetRoute = _routes.FirstOrDefault(route => route.IsRequestHandled(request));
if (targetRoute == null)
try
{
ctx.Response.StatusCode = 404;
var content = Encoding.UTF8.GetBytes("<html><body>Mock Server: page not found</body></html>");
var targetRoute = _routes.FirstOrDefault(route => route.IsRequestHandled(request));
if (targetRoute == null)
{
ctx.Response.StatusCode = 404;
byte[] content = Encoding.UTF8.GetBytes("<html><body>Mock Server: page not found</body></html>");
ctx.Response.OutputStream.Write(content, 0, content.Length);
}
else
{
var response = await targetRoute.ResponseTo(request);
_responseMapper.Map(response, ctx.Response);
}
}
catch (Exception ex)
{
ctx.Response.StatusCode = 500;
byte[] content = Encoding.UTF8.GetBytes(ex.ToString());
ctx.Response.OutputStream.Write(content, 0, content.Length);
}
else
finally
{
var response = await targetRoute.ResponseTo(request);
_responseMapper.Map(response, ctx.Response);
ctx.Response.Close();
}
ctx.Response.Close();
}
/// <summary>

View File

@@ -1,13 +1,7 @@
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Linq;
using System.Net;
using System.Text;
[module:
SuppressMessage("StyleCop.CSharp.DocumentationRules",
"SA1633:FileMustHaveHeader",
Justification = "Reviewed. Suppression is OK here, as unknown copyright and company.")]
namespace WireMock
{
/// <summary>
@@ -27,7 +21,9 @@ namespace WireMock
public void Map(ResponseMessage responseMessage, HttpListenerResponse result)
{
result.StatusCode = responseMessage.StatusCode;
responseMessage.Headers.ToList().ForEach(pair => result.AddHeader(pair.Key, pair.Value));
if (responseMessage.Body != null)
{
var content = Encoding.UTF8.GetBytes(responseMessage.Body);
@@ -35,4 +31,4 @@ namespace WireMock
}
}
}
}
}