با سلام خدمت همگی
من یه سایت با ASP Core 2 درست کردم و روی لوکال مشکلی نداشت ولی وقتی پابلیشش کردم و آپلودش کردم روی هاست اشتراکی بخش احراز هویت (لاگین) کلا کار نمیکنه مثلا من بعد از وارد کردن نام کاربری و رمزعبورم هرچی روی دکمه ورود کلیک میکنم وارد نمیشه انگار که دکمه غیرفعال کلا
روی دکمه میزنم URL تغییر میکنه (مثلا از Home/Login به Account/Login تغییر میکنه) ولی وارد نمیشه
کسی میتونه کمکی بکنه من گیر کردم توی این قسمت بدجور
سلام
باید یه جوری دیباگ کنی ببینیم مشکل دقیقا کجاست؟!
سیستم احزار هویت شما دقیقا چیه؟!
من توی هاست اشتراکی بلد نیستم چجوری دیباگ کنم
توی سیستم خودم مشکلی نداره
اینا کد های بخش لاگین سایت در کنترلر Account هستش
[HttpGet] [AllowAnonymous] public IActionResult Login(string returnUrl = null) { ViewData["ReturnUrl"] = returnUrl; return View(); } // // POST: /Account/Login [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task<IActionResult> Login(LoginViewModel model, string returnUrl = null) { ViewData["ReturnUrl"] = returnUrl; if (ModelState.IsValid) { var q = await _userManager.FindByEmailAsync(model.Email); if(q != null) { if(q.EmailConfirmed == false) { return View("CheckEmail"); } } // This doesn't count login failures towards account lockout // To enable password failures to trigger account lockout, set lockoutOnFailure: true var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: false); if (result.Succeeded) { _logger.LogInformation(1, "کاربر وارد شده است"); return RedirectToLocal(returnUrl); } if (result.RequiresTwoFactor) { return RedirectToAction(nameof(SendCode), new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }); } if (result.IsLockedOut) { _logger.LogWarning(2, "اکانت کاربر غیرفعال شذه است"); return View("Lockout"); } else { ModelState.AddModelError(string.Empty, "لاگین نا معتبر"); return View(model); } } // If we got this far, something failed, redisplay form return View(model); }
اینم کد های مربوط به لاگین در فایل Startup.cs هست :
public void ConfigureServices(IServiceCollection services) { services.Configure<IdentityOptions>(options => { options.Password.RequireDigit = false; options.Password.RequiredLength = 5; options.Password.RequireLowercase = true; options.Password.RequireNonAlphanumeric = false; options.Password.RequireUppercase = false; }); services.AddDbContext<DataContext>(options => options.UseSqlServer( Configuration.GetConnectionString("DefaultConnection"))); services.AddSingleton<IFileProvider>( new PhysicalFileProvider( Path.Combine(Directory.GetCurrentDirectory(), "wwwroot"))); services.AddIdentity<ApplicationUser, IdentityRole>() .AddEntityFrameworkStores<DataContext>() .AddDefaultTokenProviders() .AddDefaultUI() .AddEntityFrameworkStores<DataContext>(); services.AddMemoryCache(); services.AddSession(); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); services.AddScoped<RoleManager<DataContext>>(); services.AddTransient<Services.IEmailSender, AuthMessageSender>(); services.AddTransient<ISmsSender, AuthMessageSender>(); }
نمیدونم مشکل از کجاست دقیقا ، اگر مشکل خاصی باشه نباید توی سیستم خودم (لوکال) هم کار بکنه
برای این که ببینی گیر کار کجاست لازمه دیباگ کنی
برای دیباگ سایتی که با core نوشته شده لازمه کد زیر رو در web.config اضافه کنی
<environmentVariables> <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" /> </environmentVariables>
اطلاعات بیشتر در لینک زیر:
https://stackoverflow.com/questions/39238850/how-to-set-aspnetcore-environment-in-publish-file
ممنون از شما درست شد
من کدی که شما دادی رو به صورت زیر در Web.Config و بین تگ system.webserver نوشتم و به درستی کار کرد ممنون از شما
<aspNetCore processPath="dotnet" arguments=".\site.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout"> <environmentVariables> <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" /> </environmentVariables> </aspNetCore>
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)