62,041
社区成员
发帖
与我相关
我的任务
分享
public class Program
{
public static void Main(string[] args)
{
try
{
//貌似解决中文乱码的
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
var builder = new ServiceHostBuilder();
var host = builder.RegisterServices((container) =>
{
}).UseWeb()
.Build();
host.Run();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
public static IServiceHostBuilder UseWeb(this IServiceHostBuilder serviceHostBuilder)
{
var executeAss = Assembly.GetCallingAssembly();
var path = Path.GetDirectoryName(Assembly.GetCallingAssembly().Location);
var viewDll = Path.Combine(path, executeAss.GetName().Name + ".Views.dll");
Assembly viewAsm = null;
if (File.Exists(viewDll))
{
viewAsm = Assembly.LoadFrom(viewDll);
}
serviceHostBuilder.AddHostService((IHostBuilder hostBuilder) =>
{
hostBuilder.ConfigureWebHostDefaults(webHostBuilder =>
{
webHostBuilder
.ConfigureServices(services =>
{
services.AddControllersWithViews();
var mvcBuilder = services.AddMvc();
if (viewAsm != null)
{
mvcBuilder.AddApplicationPart(viewAsm);
}
mvcBuilder.AddApplicationPart(executeAss);
})
.Configure((context, app) =>
{
if (context.HostingEnvironment.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
});
});
});
return serviceHostBuilder;
}