Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP .NET Core IIS Deploy IIS AspNetCore Module Error: CLR worker thread exited prematurely

Tags:

I give IIS every feature in windows, but if your have advice please share me. Anyway I want deploy on IIS Lan server. But i cant. I working on two days this problems. I dont know how can fix this.I use ".net.5.0". My application codes like that

Program.cs

public class Program
{
    public static void Main(string[] args)
    {
        var host = new WebHostBuilder()
            .UseKestrel()
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration().UseUrls("http://localhost:8080/")
            .UseStartup<Startup>()
            .Build();
    }  
}

Startup

namespace EcommerceGastro.API
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {

            services.AddDbContext<GastroDB>();
            services.AddScoped<IMainCategoryService, MainCategoryService>();
            services.AddScoped<IProductService, ProductService>();
            services.AddScoped<ICategoryService, CategoryService>();
            services.AddScoped<IUploadImageService, UploadImageService>();
            services.AddAutoMapper(typeof(AutoMapperProfile));
            services.AddControllers();
            services.AddControllers().AddNewtonsoftJson(opt =>
            {
                opt.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
            });
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseRouting();
            app.UseStaticFiles();
            //Initiliazer.HomePageControl().Wait();
            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });
        }
    }
}

appsettings.json

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "ConnectionStrings": { "DefaultConnection": "server=.; database=GastroDB; user id=sa; password=123;" }
}


My publish settings: enter image description here

My iis settings: enter image description here

enter image description here

enter image description here

Paylaşılmıyor = Dont share enter image description here

Yetkilendirme = authority enter image description here

My Error :

Application '/LM/W3SVC/1/ROOT' with physical root 'C:\Users\Tuğçe\Desktop\iisDeneme\EcommerceGastro.API\bin\Release\net5.0\publish\' failed to load coreclr. Exception message:
CLR worker thread exited prematurely
Application '/LM/W3SVC/1/ROOT' with physical root 'C:\Users\Tuğçe\Desktop\iisDeneme\EcommerceGastro.API\bin\Release\net5.0\publish\' has exited from Program.Main with exit code = '0'. Please check the stderr logs for more information.

And i browse this iis web app its open but look like :

HTTP Error 500.30 - ASP.NET Core app failed to start
Common solutions to this issue:
The app failed to start
The app started but then stopped
The app started but threw an exception during startup
Troubleshooting steps:
Check the system event log for error messages
Enable logging the application process' stdout messages
Attach a debugger to the application process and inspect
For more information visit: https://go.microsoft.com/fwlink/?LinkID=2028265
like image 655
aaliakinci Avatar asked Apr 29 '21 07:04

aaliakinci


2 Answers

In my case, the problem was that it was running on a 32bit app pool, but the app was published as Framework-Dependent with a target runtime of win-x64. When I switched it to win-x86 my app started working, so then I looked into it and discovered the problem with the app pool. I made a new app pool, disabled 32bit, switched my app to that pool, and republished, and then it worked.

Edited to add: I had a second app display the same behavior for a different reason. In the second case, it was because I was using Serilog to write a log file to the app's root directory. But because the app pool did not have write permissions for that directory, it was failing and throwing the 500.30 error. Granting write permissions for the app pool on its directory solved the issue.

like image 80
Bodacious Avatar answered Sep 22 '22 08:09

Bodacious


The most common and easiest way to resolve this error is to re-publish your code, but with the options to "Remove additional files at destination" turned on. This will ensure that Visual Studio’s web deploy process will delete all existing files from the Web App before copying over the new code files. This will result in only the necessary files being published will exist in the Web App file system after the publish has completed. It also ensures that all files are overwritten with the newest versions; in case that may be interfering somehow as well.

To enable the Remove additional files at destination setting, click Edit on the Publish Profile within Visual Studio. The setting is located on the Settings tab underneath the File Publish Options expandable area. Check the box to enable the feature, then click Save.

like image 32
samwu Avatar answered Sep 22 '22 08:09

samwu