Azure function does not accept XML, v4 net6.0

Viewed 51

I am trying to create an azure function that will receive XML files and process them accordingly. I managed to achieve this on my local environment and everything works as intended but when I deployed it to Azure and testing, it comes back with the following 500 internal server error:

  • Data at the root level is invalid. Line 1, position 1.

Is the exact same xml that works on the local environment, I checked it on the online validators and on visual studio, there is no problem with the xml. Hoovering over the text brings:

  • Only content-type of application/json is accepted.

I have tried different approaches in code to go around reading the string but with no success:

    public class Function1
    {
        [FunctionName("Function1")]
        public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            try
            {
                log.LogInformation("C# HTTP trigger function processed a request.");
                //string msg = await new StreamReader(req.Body).ReadToEndAsync();
                XmlDocument xmlDocumnet = new XmlDocument();
                xmlDocumnet.LoadXml(await new StreamReader(req.Body).ReadToEndAsync());

and

string msg = await new StreamReader(req.Body).ReadToEndAsync();
using (var stream = new MemoryStream())
                {
                    var writer = new StreamWriter(stream);
                    writer.Write(msg);
                    writer.Flush();
                    stream.Position = 0;
                    xmlDocumnet.Load(stream);
                }

I tried to add a header to specify content-type : text/xml but it comes back with a 500:

  • Only content-type of application/json is accepted.

What would be the best approach in this case? I was thinking to create an intermediary storage which I then would load the file in the function without passing it into the body but that would increase the processing time.

0 Answers
Related