Hej. Inte vad jag kan komma på. Att det fungerar när du inte har wildcard är ju för att _iis_ gör samma sakRewritePath och default.aspx:er
Jag använder RewritePath för att skapa sökvägar på siten som inte finns
istället för /produkt/?id=5 så har jag /produkt/produktnamn
detta rewritas sedan till /products.aspx?id=5
Nu till problemet.
Eftersom IIS inte längre sköter wildcard-hanteringen utan att min app måste sköta detta så funkar inte längre default.aspx sökägar
skriver jag tex /admin
så förut gick det automagiskt till /admin/default.aspx
Jag har skrivit denna lilla kodsnutt för att lösa det, men det känns som att det borde finnas snyggare sätt
protected void Application_BeginRequest(object sender, EventArgs e)
{
if (!Controller.ExecuteIndexAction(Request.Url.AbsolutePath.Replace(Request.ApplicationPath + "/", string.Empty)))
{
if (!File.Exists(Server.MapPath(Request.Url.AbsolutePath)))
{
string defaultPath = Request.Url.AbsolutePath.TrimEnd('/') + "/default.aspx";
if (File.Exists(Server.MapPath(defaultPath)))
HttpContext.Current.RewritePath(defaultPath, false);
}
}
}
Controller.ExecuteIndexAction() sköter rewriten för kända sökvägar som /produkt/produktnamn
Den returnerar false om sökvägen inte är känd, då kollar jag om filen finns på disk, ex på filer som finns på disk är css, js, gif filer osv...
Finns inte filen på disk så testar jag att lägga på default.aspx på sökvägen och kollar om denna fil finns på disk... Finns den filen på disk så rewritar jag pathen till denna..
Finns det inget elegantare sätt för att sköta detta?Sv: RewritePath och default.aspx:er