Возврат XML из основной функции ASP.Net - PullRequest
0 голосов
/ 09 января 2019

У меня есть лямбда-функция 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 как тип содержимого и пустой результат.

Извините, если это кажется основным вопросом, но я действительно смущен этим.

Есть предложения?

Большое спасибо заранее за вашу помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...