1

I am a junior software developer and to be brief, I recently built an API by creating an ASP.NET Web Application and choosing Web API. Added to that was the ADO.NET Entity Data Model. What it did? All that was done by that API was retrieving data from an Amazon RDS. Everything worked great, this is an example output

[
    {
      "demo_id": "id_value",
      "demo_name": "data 1",
      "demo_specificity": "Total",
      "demo_period": "'May'",
      "demo_value": 10
    },
    {
      "demo_id": "id_value",
      "demo_name": "data 2",
      "demo_specificity": "Total",
      "demo_period": "'May'",
      "demo_value": 544
    }
]

Later I was asked to convert it as a serverless app with AWS Lambda and AWS API Gateway. I followed these instructions https://www.jerriepelser.com/blog/aspnet-core-aws-lambda-serverless-application/. I installed the AWS toolkit on Visual Studio created an AWS serverless app and into the solution I added my API project which I referenced in my AWS serverless app. This is the project structure

enter image description here

In my API (ObservatoireAPI) this was my Controller:

using ObservatoireAPI.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;

namespace ObservatoireAPI.Controllers
{
    public class ObservatoireController : ApiController
    {
        public IEnumerable<SLM_RAW_INDICATORS> GetSLM_RAW_INDICATORS()
        {
            using(gpaEntities entities = new gpaEntities())
            {
                return entities.SLM_RAW_INDICATORS.ToList();
            }
        }


    }
}

And in my ObservatoireAWS (AWS Serverless APP) Controller I just called that function this way:

using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc;
using ObservatoireAPI.Controllers;

namespace ObservatoireAWS.Controllers
{
    [Route("[controller]")]
    public class ObservatoireAWSController : Controller
    {
        [HttpGet]
        public IActionResult Get()
        {
            ObservatoireController api = new ObservatoireController();
            var apiResult = api.GetSLM_RAW_INDICATORS();

            return Ok(apiResult);
        }
    }
}

Honestly I'm sure I did everything great, but on launching the app (locally first), I get HTTP Error 500.0 - ANCM In-Process Handler Load Failure. I tried googling and people were recommending switching between In Process and Out Process. I tried the Out Process but it crashed so i left it back the way it was.Not willing to alter configs I didn't understand I preferred opening an issue.

Here are two solution that i tried to implement but that didn't work for me:

  1. Github
  2. Stackoverflow

Once more thanks.

This is my dotnet --info

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.17763
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk\3.1.301\

Host (useful for support):
  Version: 3.1.5
  Commit:  65cd789777

.NET Core SDKs installed:
  3.0.100 [C:\Program Files\dotnet\sdk]
  3.1.301 [C:\Program Files\dotnet\sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.All 2.1.13 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.1.13 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.0.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.1.5 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 2.1.13 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.0.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.1.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.WindowsDesktop.App 3.0.0 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
  Microsoft.WindowsDesktop.App 3.1.5 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

To install additional .NET Core runtimes or SDKs:
  https://aka.ms/dotnet-download

C:\Users\Administrator>
The_Thinker
  • 75
  • 3
  • 9
  • Use a sniffer like wireshark or fiddler and capture the original working request and compare with non working request. Usually the c# headers in first request are not correct. c# default headers are different from other tools and usually need to be modified so they look like the working applicaiton. – jdweng Jun 24 '20 at 11:00
  • when I get this it is usually some missing configuration in the config json. I would suggest putting a try catch around the entry point(Program.cs) which gives more details if its what I think it is – Vivekh May 20 '21 at 16:15

0 Answers0