У меня есть лямбда-функция aws, написанная и скомпилированная в ASP.net core v2.0 и Visual Studio Community 2017. Что я хочу сделать, так это то, что всякий раз, когда к этой функции приходит запрос клиента, после выполнения каких-то действий в функции, в конце функция возвращает XML обратно клиенту.
моя функция примерно такая:
public System.Xml.XmlDocument FunctionHandler(xmlRequestString input, ILambdaContext context)
{
//create xml response object
System.Xml.XmlDocument returnXML = new System.Xml.XmlDocument();
//fill my xml object
System.Xml.XmlNode rootNode = returnXML.CreateElement("ANSWER");
returnXML.AppendChild(rootNode);
System.Xml.XmlNode statusNode = returnXML.CreateElement("STATUS");
statusNode.InnerXml = "0";
rootNode.AppendChild(statusNode);
System.Xml.XmlElement rootresult = returnXML.DocumentElement;
System.Xml.XmlNode rootnode = rootresult.FirstChild;
//do something in the function which is not relevant to this question
//returning back my xml object to client
return returnXML;
}
Итак, в идеальном сценарии функция должна возвращать что-то вроде этого:
<ANSWER>
<STATUS>0</STATUS>
</ANSWER>
Однако, когда я делаю запрос со стороны клиента к этой функции, используя curl, кажется, что ответ пуст. Более того, в ответе из командной строки я вижу что-то вроде этого:
< HTTP/1.1 200 OK>
< Content-Type: application/json>
Content-Type: application/json>
Я очень старался заставить функцию возвращать xml. Я сделал две вещи для этого:
1. из AWS API-шлюза: я изменил все на application / xml в ответах на интеграцию и ответе на метод ... так что у меня это вообще не сработало! Все еще видите эти приложения / JSON в ответе вместо XML.
2.Я создал класс Startup.cs и добавил к нему следующий код:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.AddXmlSerializerFormatters()
.AddXmlDataContractSerializerFormatters(); ;
}
}
для этого в myproject.csproj я добавил следующие строки в тег:
<PackageReference Include="Microsoft.AspNetCore.Mvc.Formatters.Xml" Version="1.1.3" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.3" />
Более того, согласно предложениям форумов, я также попытался добавить строку ниже в AddMvc (с уже добавленными параметрами и без них):
options.RespectBrowserAcceptHeader = true; // false by default
Этот подход также не работал, и все же я получаю json как тип содержимого и пустой результат.
Извините, если это кажется основным вопросом, но я действительно смущен этим.
Есть предложения?
Большое спасибо заранее за вашу помощь.