У меня проблемы с использованием app.Use
Сценарий таков:
У меня есть код в Startup.Configure
, например:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
AR.Statistic.Visits.Initialize(Path.Combine(env.WebRootPath, "Statistics"));
AR.Statistic.Visitors.Initialize(Path.Combine(env.WebRootPath, "Statistics"));
var cultureInfo = new CultureInfo("en-US");
cultureInfo.NumberFormat.NumberGroupSeparator = ",";
cultureInfo.NumberFormat.NumberDecimalSeparator = ".";
cultureInfo.NumberFormat.CurrencyDecimalSeparator = ",";
cultureInfo.NumberFormat.CurrencyGroupSeparator = ",";
CultureInfo.DefaultThreadCurrentCulture = cultureInfo;
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy();
app.Use(async (context, next) =>
{
Program.AbsolutePath = env.WebRootPath;
string path = context.Request.Path.Value.ToLower();
// Linkovi koji su dostupni svima
string[] links = new string[] { "/home/success", "/proizvod/", "/kontakt", "/porudzbina", "/home/dostava", "/user/registracija", "/home/pizaberijednokratnog", "/home/pizaberiprofi", "/user" };
// Linkovi koji su dostupni profesionalnim kupcima
string[] links1 = new string[] { "/proizvodi", "/korpa", "/user", "/admin" };
// Linkovi koji su dostupni jednokratnim kupcima
string[] links2 = new string[] { "/proizvodi", "/korpa" };
bool Redirect = true;
foreach (string s in links)
if (path.Contains(s))
Redirect = false;
if (Security.isJednokratanKupac(context.Request))
{
foreach (string s in links2)
if (path.Contains(s))
Redirect = false;
if (path == "/")
Redirect = false;
}
else if (Security.isProfiKupac(context.Request))
{
AR.ARWebAuthorization.ARWebAuthorizationUser u = AR.ARWebAuthorization.ARWebAuthorization.GetUser(context.Request.Cookies["h"]);
if (u == null && !path.Contains("/user/alogin"))
{
context.Request.Path = "/User";
}
else
{
foreach (string s in links1)
if (path.Contains(s))
Redirect = false;
if (path == "/")
Redirect = false;
}
}
if (Redirect)
context.Request.Path = "/Home/IzaberiTip";
await next.Invoke();
});
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
, и это работает хорошо с точки зрения перенаправления пользователя, учитывая его состояние входа (isProfiKupa c или isJednokratanKupa c) , но некоторые ajax
вызовы не работают.
В настоящее время я пытаюсь исправьте это:
function UpdateKolicine(element) {
_wait("Azuriranje kolicine...");
$.ajax({
type: "GET",
url: "/Korpa/JIzmeniKolicinuUKorpi",
data: {
"RobaID": $(element).attr("data-robaid"),
"Kolicina": $("input[data-robaid=" + $(element).attr("data-robaid") + "]").val()
},
success: function (data) {
window.location.reload();
}
});
}
Как видите, этот вызывает функцию /Korpa/JIzmeniKolicinuUKorpi
, и она срабатывает, но не так, как должно быть.
Я покажу, как проходит точка останова. код в этой функции:
public IActionResult JIzmeniKolicinuUKorpi(int? RobaID, double? Kolicina)
{
if (RobaID == null)
return Json("Id robe ne moze biti null!");
if (Kolicina == null)
return Json("Kolicina ne moze biti null!");
AR.ARWebAuthorization.ARWebAuthorizationUser User = AR.ARWebAuthorization.ARWebAuthorization.GetUser(Request.Cookies["h"]);
if (Security.isLogged(Request))
{
Jednokratan.KorpaItem.UpdateKolicina(Request, (int)RobaID, (int)Kolicina);
return Json("Uspesno azurirana kolicina!");
}
else
{
AR.TDShop.User TDUser = User.LocalUserClass as AR.TDShop.User; // Breakpoint hits this line and then it jumps to `Configure` function from start of this question at line `await next.Invoke()`
try
{
TDUser.Korpa.SetQuantity((int)RobaID, (double)Kolicina); // It never hits this line
return Json("Uspesno azurirana kolicina!");
}
catch (AR.ARException ex)
{
return Json(ex.ToString());
}
}
}
Таким образом, как вы можете видеть в комментарии в приведенном выше коде, точка останова внезапно переходит к функции Configure
в данной строке и никогда не продолжается. Это останавливает мой код и заставляет страницу просто зависать.
Что я делаю не так?