a year 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.csfile 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
PORTenvironment variable).
Additional Details:
In
Program.cs, I explicitly configure the app to listen on the RailwayPORTusing this code:csharpCopiarEditar
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 usingConfigurationBuilderin theStartupclass.I use Quartz for scheduled jobs, and all dependencies appear to resolve correctly during the build.
Steps I’ve Tried:
Confirmed the
PORTvariable 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.csandStartup.cswith Nixpacks?
Thank you for your time and assistance!
4 Replies
a year 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.
a year 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 • about 1 year ago
a year 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:
csharpCopiarEditar
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 • about 1 year ago
a year 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 • about 1 year ago
Status changed to Solved ray-chen • about 1 year ago