Ho un'applicazione MVC ospitata su un server (IIS) che punta a 3 database SQL. Questo è stato eseguito senza problemi per mesi.OWIN URI non valido: la stringa Uri è troppo lunga
Ho appena dovuto modificare le stringhe di connessione per tutti e 3 i database SQL per puntare a nuovi database.
Ora, quando provo ad entrare nel ricevo il seguente errore ..
Le stringhe di connessione utilizza l'autenticazione di Windows e l'account è impostato nel AppPool. Ho anche provato manualmente a connettermi a ciascuna istanza di database con l'account e questo funziona correttamente. Sto iniziando a pensare che il cambiamento è che le connessioni SQL sono solo una falsa pista.
In termini di messaggio di errore, capisco perfettamente qual è l'errore. Im non sono sicuro del motivo per cui è stato lanciato. L'unica cosa che posso pensare è che sono in una specie di ciclo di reindirizzamento che sta aggiungendo l'URL.
Sembra decisamente un problema di IIS ma non riesco a metterci il dito sopra.
Qualcuno lo ha mai incontrato prima con OWIN o può consigliare sui passaggi di debug che potrebbero diagnosticare il problema?
Startup.cs
public partial class Startup
{
private static bool IsAjaxRequest(IOwinRequest request)
{
IReadableStringCollection query = request.Query;
if ((query != null) && (query["X-Requested-With"] == "XMLHttpRequest"))
{
return true;
}
IHeaderDictionary headers = request.Headers;
return ((headers != null) && (headers["X-Requested-With"] == "XMLHttpRequest"));
}
public void ConfigureAuth(IAppBuilder app)
{
// Configure the db context, user manager and role manager to use a single instance per request
app.CreatePerOwinContext(ParentDbContext.Create);
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
app.CreatePerOwinContext<ApplicationRoleManager>(ApplicationRoleManager.Create);
app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);
app.CreatePerOwinContext(PrincipalManager.Create);
// Enable the application to use a cookie to store information for the signed in user
// and to use a cookie to temporarily store information about a user logging in with a third party login provider
// Configure the sign in cookie
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
Provider = new CookieAuthenticationProvider
{
// Enables the application to validate the security stamp when the user logs in.
// This is a security feature which is used when you change a password or add an external login to your account.
OnValidateIdentity =
SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser, Guid>(
TimeSpan.FromMinutes(int.Parse(WebConfigurationManager.AppSettings["RefreshInterval"])),
(manager, user) => manager.GenerateUserIdentityAsync(user),
claim => new Guid(claim.GetUserId())),
OnApplyRedirect = ctx =>
{
if (!IsAjaxRequest(ctx.Request))
{
ctx.Response.Redirect(ctx.RedirectUri);
}
}
}
});
}
}
Mostra il tuo 'Startup.cs' – haim770
@ haim770 Scuse dovrei aver incluso che per cominciare. – heymega
Hai provato Fiddler o F12 ecc per acquisire le richieste http tra browser e server? –