У меня есть RESTful API, созданный с ASP.NET MVC2, который возвращает все данные в формате XML:
string xml = Serialize(Data, context, AcceptCharsetList, encoding);
context.HttpContext.Response.ContentEncoding = encoding;
context.HttpContext.Response.Charset = encoding.WebName;
context.HttpContext.Response.ContentType = "application/xml";
context.HttpContext.Response.Write(xml);
На моем локальном хосте, который отлично работает как для обычных ответов (модель + представление), так и для ошибок (ошибкамодель + ошибка + код состояния http).
Но на реальном веб-сервере только обычные запросы возвращают xml.Для ошибок это не работает, и ошибка подается как HTML с типом содержимого = text / html.
Мой локальный хост - это 64-битная Windows 7 с IIS 7.5, а мой веб-сервер - 64-битная Windows 2008 с IIS 7.5
Что может быть не так?
Ожидаемый XML такой:
<?xml version="1.0"?>
<Error xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://api.example.com/">
<Description>(403) Forbidden.</Description>
</Error>
Но он возвращает этот HTML вместо этого на веб-сервере:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<title>403 - Forbidden: Access is denied.</title>
</head>
<body>
<div id="header"><h1>Server Error</h1></div>
<div id="content">
<div class="content-container"><fieldset>
<h2>403 - Forbidden: Access is denied.</h2>
<h3>You do not have permission to view this directory or page using the
credentials that you supplied.</h3>
</fieldset></div>
</div>
</body>
</html>