3 months ago
Hello,
I am encountering issues while deploying my .NET 6 API project on Railway using Nixpacks. My project uses a Startup
class for configuration instead of handling everything in Program.cs
. I’ve followed all necessary steps, but the deployment fails to start correctly. Here's a summary of my setup and the challenges I'm facing:
Environment and Setup:
Framework: .NET 6
Deployment method: Nixpacks
Entry point: Custom
Program.cs
file that calls methods inStartup.cs
.
Deployment Issues:
The app builds successfully but doesn’t run correctly after deployment.
It fails to listen on the required port (as provided by Railway via the
PORT
environment variable).
Additional Details:
In
Program.cs
, I explicitly configure the app to listen on the RailwayPORT
using this code:CopiarEditar
var port = Environment.GetEnvironmentVariable("PORT") ?? "5000"; app.Urls.Add($"http://0.0.0.0:{port}");
I’ve set up all required environment variables and included them in
appsettings.json
. I also load these variables usingConfigurationBuilder
in theStartup
class.I use Quartz for scheduled jobs, and all dependencies appear to resolve correctly during the build.
Steps I’ve Tried:
Confirmed the
PORT
variable is correctly passed to the app.Reviewed logs for runtime errors, but the logs are not providing clear guidance.
Validated that all required libraries are compatible with .NET 6.
Expected Behavior:
The API should listen on the correct port and respond to requests.
Actual Behavior:
The app starts but doesn’t appear to bind to the expected port or handle requests.
Could someone guide me on:
Verifying the correct entry point configuration for a .NET 6 project using Nixpacks?
Debugging deployment issues in Railway?
Best practices for combining
Program.cs
andStartup.cs
with Nixpacks?
Thank you for your time and assistance!
4 Replies
3 months ago
Hello, I wanted to provide additional information regarding my ongoing issue with the "Bad Gateway" error t. Today, I noticed the following logs in Railway observability section:
Starting Container
Environment: Production
warn: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[35]
No XML encryptor configured. Key {5e649691-7ba3-403c-956f-252895b6db90} may be persisted to storage in unencrypted form.
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: /app/
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://localhost:5000
info: Microsoft.Hosting.Lifetime[14]
Now listening on: https://localhost:5001
Stopping Container
info: Microsoft.Hosting.Lifetime[0]
Application is shutting down...
Additionally, I have noticed that some scheduled tasks assigned to the application are running successfully during nighttime hours, as evidenced by the HTTP logs provided by Railway. This suggests that the application is operational for certain periods, but it eventually shuts down unexpectedly.
It doesn't seem to be an issue with the ports but rather something else causing this behavior. Could you please assist me in diagnosing the root cause of the problem? Any additional guidance or insights would be greatly appreciated.
3 months ago
Heya, is your app binding to ipv6 ?
See our docs on networking when using railway: https://docs.railway.com/guides/private-networking#listen-on-ipv6
Nico
Status changed to Awaiting User Response railway[bot] • 3 months ago
3 months ago
I've tried several configurations. Among them, I tried using a private network. Since Railway wasn't my first option for deploying the front-end app, I initially attempted to use a public network to connect. However, whether deploying on Netlify or Railway, I always get the same response: a preflight error (missing headers), which leads me to a CORS issue:
"Access to XMLHttpRequest at 'https://geoapi.up.railway.app/api/user/login' from origin 'https://lstgeo.up.railway.app' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource."
My startup has CORS configured this way:
CopiarEditar
services.AddCors(options => { options.AddPolicy("AllowSpecificOrigins", builder => { builder.WithOrigins("https://lstgeo.up.railway.app", "https://lstgeo.netlify.app", "http://localhost:4200", "https://localhost:4200") .AllowAnyHeader() .AllowAnyMethod() .AllowCredentials(); }); });
Then, I ensure to call app.UseCors("AllowSpecificOrigins")
before authentication and authorization.
I left localhost
in the configuration for testing purposes, and when I run the frontend locally, it works. I can log into my app, and everything functions as expected.
Status changed to Awaiting Railway Response railway[bot] • 3 months ago
3 months ago
Access to XMLHttpRequest at 'https://geoapi.up.railway.app/api/user/login' from origin 'https://lstgeo.up.railway.app' has been blocked by CORS policy
This is an issue specific to your app/code that we're unable to help with, sorry. We can only help with issues related to the Railway product or platform.
CORS configuration has nothing to do with the platform, but rather your code. I'd suggest checking out other communities such as StackOverflow that may be more appropriate for code-related questions.
Status changed to Awaiting User Response railway[bot] • 3 months ago
Status changed to Solved ray-chen • 3 months ago