Я только что закончил свой asp. net core 3.1 проект. и я пытался развернуть его на IIS . Итак, сначала я создал Asp Identity , и он создал identityHostingStartup и другие файлы. И опубликовал проект как самодостаточный для win-x64 , когда я сгенерировал самоподписанный сертификат, используя openssl для идентификации с использованием этого процесса https://benjii.me/2017/06/creating-self-signed-certificate-identity-server-azure/ и поместите его в publi sh folder.also я также использовал Нет управляемого кода для пула приложений, когда я тестировал его, вход в систему он работал на некоторых машинах на chrome, но для тех, кто это не сделал не работает, он все еще работает в браузере Microsoft Edge. когда я проверял логин, он показывает предупреждение "повар ie, связанный с ресурсом, был установлен с samesite == нет" и предупреждение исчезает мгновенно. Но запрос был отправлен с поваром ie со значением "samesite = strict" и не является безопасным. Поэтому я изменил startup.cs и установил его на none, но он не работал.
Вот код для startup.cs
{
X509Certificate2 cert = null;
using (X509Store certStore = new X509Store(StoreName.My, StoreLocation.CurrentUser))
{
certStore.Open(OpenFlags.ReadOnly);
X509Certificate2Collection certCollection = certStore.Certificates.Find(
X509FindType.FindByThumbprint,
// Replace below with your cert's thumbprint
"418f13d9473b6412e186f8e3a05fbf0370ec865c",
false);
// Get the first cert with the thumbprint
if (certCollection.Count > 0)
{
cert = certCollection[0];
//Log.Logger.Information($"Successfully loaded cert from registry: {cert.Thumbprint}");
}
}
// Fallback to local file for development
if (cert == null)
{
cert = new X509Certificate2(Path.Combine("C:\\inetpub\\wwwroot\\VatAppPublish\\", "localhost.pfx"), "");
// Log.Logger.Information($"Falling back to cert from file. Successfully loaded: {cert.Thumbprint}");
}
services.AddDbContext<vat_dbContext>(options =>
options.UseMySql(
Configuration.GetConnectionString("DefaultConnection")));
services.AddDbContext<ApplicationDbContext>(options =>
options.UseMySql(
Configuration.GetConnectionString("DefaultConnection")));
services.AddMvc(option => option.EnableEndpointRouting = false)
.SetCompatibilityVersion(CompatibilityVersion.Version_3_0)
.AddNewtonsoftJson(opt => opt.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore)
.AddFluentValidation(fv => fv.RegisterValidatorsFromAssemblyContaining<Startup>());
services.AddAuthentication(IISDefaults.AuthenticationScheme);
services.AddTransient<CompanyBLLCustom>();
services.AddTransient<CustomerBLLCustom>();
services.AddTransient<MachinesalesBLLCustom>();
services.AddTransient<ManualsalesBLLCustom>();
services.AddTransient<PurchaseBLLCustom>();
services.AddTransient<SummaryreportsBLLCustom>();
services.AddTransient<SystemconfigBLLCustom>();
services.AddTransient<SalesreportBLLCustom>();
services.AddTransient<PurchasereportBLLCustom>();
services.AddTransient<CompanyFunctions>();
services.AddTransient<CustomerFunctions>();
services.AddTransient<MachinesalesFunctions>();
services.AddTransient<ManualsalesFunctions>();
services.AddTransient<PurchaseFunctions>();
services.AddTransient<SystemconfigFunctions>();
services.AddTransient<SummaryreportsFunctions>();
services.AddTransient<SalesreportFunctions>();
services.AddTransient<PurchasereportFunctions>();
services.AddTransient<CompanyValidator>();
services.AddTransient<CustomerValidator>();
services.AddTransient<MachinesalesValidator>();
services.AddTransient<ManualsalesValidator>();
services.AddTransient<PurchaseValidator>();
services.AddTransient<SummaryreportsValidator>();
services.AddTransient<SystemconfigValidator>();
services.AddDefaultIdentity<ApplicationUser>(options => options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<ApplicationDbContext>();
services.AddIdentityServer()
.AddApiAuthorization<ApplicationUser, ApplicationDbContext>()
.AddSigningCredential(cert); ;
services.Configure<CookiePolicyOptions>(options =>
{
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddAuthentication()
.AddIdentityServerJwt();
services.AddControllersWithViews();
services.AddRazorPages();
// In production, the React files will be served from this directory
services.AddSpaStaticFiles(configuration =>
{
configuration.RootPath = "ClientApp/build";
});
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseAuthentication();
app.UseIdentityServer();
app.UseHttpsRedirection();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
}
else
{
app.UseExceptionHandler("/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.UseStaticFiles();
app.UseSpaStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller}/{action=Index}/{id?}");
endpoints.MapRazorPages();
});
app.UseSpa(spa =>
{
spa.Options.SourcePath = "ClientApp";
if (env.IsDevelopment())
{
spa.UseReactDevelopmentServer(npmScript: "start");
}
});
app.UseCookiePolicy(new CookiePolicyOptions
{
MinimumSameSitePolicy = SameSiteMode.None
});
* appseting. json*
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Port=3306;User=root;Password='';Database=vat_db;TreatTinyAsBoolean=true"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"IdentityServer": {
"Clients": {
"VatApplication": {
"Profile": "IdentityServerSPA"
}
}
,
"Key": {
"Type": "File",
"FilePath": "C:\\inetpub\\wwwroot\\VatAppPublish\\localhost.pfx",
"Password": ""
}
},
"AllowedHosts": "*"
}
IdentityHostingStartup.CS
{
public void Configure(IWebHostBuilder builder)
{
builder.ConfigureServices((context, services) => {
});
}
}
Заранее спасибо.