I am trying to host an API (ASP.NET) on my Raspberri Pi 3B . I would like to access this API swagger page from my laptop/phone/pc etc.
What I've tried until now: Installed, compiled, built and ran the web application with dotnet on my RPi.
running dotnet --info
on the RPi provides us the following information:
.NET SDK (reflecting any global.json):
Version: 5.0.405
Commit: 63325e1c7d
Runtime Environment:
OS Name: raspbian
OS Version: 11
OS Platform: Linux
RID: linux-arm
Base Path: /usr/share/dotnet/sdk/5.0.405/
Host (useful for support):
Version: 5.0.14
Commit: d5b56c6327
.NET SDKs installed:
5.0.405 [/usr/share/dotnet/sdk]
.NET runtimes installed:
Microsoft.AspNetCore.App 5.0.14 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 5.0.14 [/usr/share/dotnet/shared/Microsoft.NETCore.App]
When I run the program (filepath ~/first-rpi-api/bin/Release/net5.0/publish/first-rpi-api
)
I get the following:
info: Microsoft.Hosting.Lifetime[0]
Now listening on: http://localhost:5000
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:5001
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Production
info: Microsoft.Hosting.Lifetime[0]
Content root path: /home/pi/first-rpi-api/bin/Release/net5.0/publish
The default URL for the swagger UI would be : https://localhost:44335/swagger/index.html
However when I try to access the API from my PC on URL : https://RPi_IP:5000/swagger/index.html
I get ERR_CONNECTION_REFUSED
How do I fix this ? Have I missed something and how would I approach this problem ?
CodePudding user response:
info: Microsoft.Hosting.Lifetime[0]
Now listening on: http://localhost:5000
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:5001
Listening on localhost
means that it's only listening to network connections from the same machine (which is the Raspberry Pi, in your case). If you want it to listen to network connections from outside the machine, you need to listen to 0.0.0.0
.
Without seeing your code that sets up network conncetions, it's hard to be sure what a fix that would integrate well would look like but try doing this before running your program:
export ASPNETCORE_URLS="http://*:5000;https://*:5001"
That will make your application allow connections from anywhere.