![](/img/trans.png)
[英]Asp.Net routing which redirects to homepage if url parameter is not defined
[英]ASP.NET MVC redirects on first page load to homepage, and not to requested URL
當我遇到以下問題時,我正在一個客戶的MVC項目中工作。
我的客戶是房地產經紀人。 ( http://stienstra.nl/ )
上周,我們為參觀房屋建立了在線表格。 3天后,訂閱者會收到一封電子郵件,其中包含指向客戶滿意度表格的鏈接(也是上周生成的)。 ( http://stienstra.nl/Enquete )單擊此鏈接並加載網站后,用戶將被重定向到主頁而不是表單。
當我將已經加載的(主頁)頁面的URL更改為stienstra.nl/Enquete時,它可以正常工作。
誰能告訴我怎么了。
非常感謝。
我的RouteConfig
namespace Stienstra.App_Start
{
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("xml");
routes.MapRoute("SitemapXml", "sitemap.xml", new {controller = "Xml", action = "Sitemap"});
// NOTE THE MAINTENANCE ROUTE - only if exists in web.config
try
{
var settings = new AppSettingsReader();
if (settings.GetValue("Maintenance", typeof (String)) != null)
routes.MapRoute("Maintenance", "{*url}", new {controller = "Home", action = "Maintenance"});
}
catch (Exception)
{
}
// Algemene pagina routes
routes.MapRoute("over-stienstra", "over-stienstra", new {controller = "Home", action = "About"})
.SetRouteName("over-stienstra");
routes.MapRoute("voor-huurders", "voor-huurders", new {controller = "Home", action = "VoorHuurders"})
.SetRouteName("voor-huurders");
routes.MapRoute("contact", "contact", new {controller = "Home", action = "Contact"}).SetRouteName("contact");
routes.MapRoute("open-huis", "open-huis", new {controller = "Home", action = "OpenHuis"})
.SetRouteName("open-huis");
routes.MapRoute("werken-bij-stienstra", "werken-bij-stienstra",
new {controller = "WerkenBijStienstra", action = "Index"}).SetRouteName("werken-bij-stienstra");
routes.MapRoute("disclaimer", "disclaimer", new {controller = "Home", action = "Dislaimer"})
.SetRouteName("disclaimer");
routes.MapRoute("huurvoorwaarden", "huurvoorwaarden", new {controller = "Home", action = "Huurvoorwaarden"})
.SetRouteName("huurvoorwaarden");
routes.MapRoute("facebook", "facebook", new {controller = "Home", action = "Facebook"})
.SetRouteName("facebook");
// De routes voor recente nieuwbouw
routes.MapRoute("recente-nieuwbouw", "nieuwbouw-te-huur", new {controller = "Nieuwbouw", action = "Index"});
routes.MapRoute("recente-nieuwbouw-voordelen-van-huren", "nieuwbouw-te-huur/voordelen-van-huren",
new {controller = "Nieuwbouw", action = "Page", id = 1});
routes.MapRoute("recente-nieuwbouw-energiezuinig-wonen", "nieuwbouw-te-huur/energiezuinig-wonen",
new {controller = "Nieuwbouw", action = "Page", id = 2});
routes.MapRoute("recente-nieuwbouw-service-en-kwaliteit", "nieuwbouw-te-huur/service-en-kwaliteit",
new {controller = "Nieuwbouw", action = "Page", id = 3});
routes.MapRoute("recente-nieuwbouw-huurvoorwaarden", "nieuwbouw-te-huur/huurvoorwaarden",
new {controller = "Nieuwbouw", action = "Page", id = 4});
routes.MapRoute("mijn-woningen", "mijn-woningen", new {controller = "Home", action = "MijnWoningen"})
.SetRouteName("mijn-woningen");
// nieuwe SEO routes
routes.MapRoute("koop-woning", "koop/{stad}",
new {controller = "Woning", action = "WoningenIn", stad = UrlParameter.Optional, type = 1},
new[] {"Stienstra.Controllers"});
routes.MapRoute("huur-woning", "huur/{stad}",
new {controller = "Woning", action = "WoningenIn", stad = UrlParameter.Optional, type = 2},
new[] {"Stienstra.Controllers"});
routes.MapRoute("project-detail", "nieuwbouw-te-huur/project/{plaats}/{projectnaam}/{projectnummer}",
new {controller = "Nieuwbouw", action = "Project", projectnummer = typeof (string)});
routes.MapRoute("print-project-detail",
"nieuwbouw-te-huur/print-project/{plaats}/{projectnaam}/{projectnummer}",
new {controller = "Nieuwbouw", action = "Print", projectnummer = typeof (string)});
//afdrukken woning
routes.MapRoute("print-woning-detail", "print-woning/{id}/{plaats}/{straat}/{huisnummer}",
new {controller = "Woning", action = "Print"}, new[] {"Stienstra.Controllers"});
routes.MapRoute("GetAlert", "Home/Alert/{email}/{code}",
new {controller = "Home", action = "Alert", email = typeof (string), code = typeof (string)});
routes.MapRoute("DeleteAlert", "Home/DeleteAlert/{email}/{code}",
new {controller = "Home", action = "DeleteAlert", email = typeof (string), code = typeof (string)});
routes.MapRoute("ParariusXml", "xml/pararius.xml", new {controller = "XmlSource", action = "Pararius"});
routes.MapRoute("XML", "XmlSource/{action}", new {controller = "XmlSource", action = "Index"});
var db = new DataClassesDataContext();
routes.MapRoute("woning-route", "woning/{plaats}/{straat}/{huisnummer}",
new
{
controller = "Home",
action = "WoningDetails",
plaats = typeof (string),
straat = typeof (string),
huisnummer = UrlParameter.Optional
});
IQueryable<string> plaatsen = (from p in db.Wonings select p.itemPlaats).Distinct();
foreach (string plaats in plaatsen.Where(p => p != ""))
{
routes.MapRoute("Plaats" + plaats.Replace(" ", ""), plaats.Replace(" ", ""),
new {controller = "Home", action = "Stad", stad = plaats});
}
routes.MapRoute("Beheer", "Beheer", new {controller = "Woning", action = "Index", area = "Beheer"});
routes.MapRoute("BeheerZichtbaarheid", "Beheer/Woning/Visibility/{id}",
new {controller = "Woning", action = "Visibility", id = UrlParameter.Optional, area = "Beheer"});
routes.MapRoute("Paging", "{controller}/Woningen/{page}",
new {controller = "Home", action = "Woningen", page = UrlParameter.Optional});
routes.MapRoute("PlaatsenInDB", "Home/Plaatsen/{q}",
new {controller = "Home", action = "Plaatsen", q = UrlParameter.Optional});
routes.MapRoute("StratenInDB", "Home/Straten/{q}",
new {controller = "Home", action = "Straten", q = UrlParameter.Optional});
routes.MapRoute("Details", "Details/{id}", new {controller = "Home", action = "Details", id = typeof (long)});
routes.MapRoute("RemoveFilters", "RemoveFilter/{filter}",
new {controller = "Home", action = "RemoveFilter", filter = UrlParameter.Optional});
routes.MapRoute("Provincies", "Provincie/{provincie}",
new {controller = "Home", action = "Provincie", provincie = UrlParameter.Optional});
routes.MapRoute("DeleteFromProfile", "MijnWoningen/Vergeet/{id}",
new {controller = "Home", action = "Vergeet", id = UrlParameter.Optional});
routes.MapRoute("OverzichtWoningen", "Woningen", new {controller = "Home", action = "Woningen"});
routes.MapRoute("OverzichtWoningenOpenHuis", "OpenHuis", new {controller = "Home", action = "OpenHuis"});
routes.MapRoute("Kaart", "Kaart", new {controller = "Home", action = "Kaart"});
routes.MapRoute("KaartVanNederland", "KaartVanNederland",
new {controller = "Home", action = "KaartVanNederland"});
// maintenance *ALLEEN* voor homepage
routes.MapRoute("logout", "uitloggen", new {controller = "Account", action = "LogOff"});
// Digitaal Inschijfformulier voor huuraanvraag
routes.MapRoute("InschrijvenOpslaan", "Inschrijven/Save", new {controller = "Inschrijven", action = "Save"});
routes.MapRoute("InschrijvenOpgeslagen", "Inschrijven/Saved/{pandid}",
new {controller = "Inschrijven", action = "Saved", pandid = UrlParameter.Optional});
routes.MapRoute("Inschrijven", "Inschrijven/{pandid}",
new {controller = "Inschrijven", action = "Index", pandid = UrlParameter.Optional});
// Enquete, aantal dagen na invullen Digitaal Inschijfformulier voor huuraanvraag
routes.MapRoute("EnqueteOpslaan", "Enquete/Save", new {controller = "Enquete", action = "Save"});
routes.MapRoute("EnqueteOpgeslagen", "Enquete/Saved", new {controller = "Enquete", action = "Saved"});
routes.MapRoute("Enquete", "Enquete/{pandid}",
new {controller = "Enquete", action = "Index", pandid = UrlParameter.Optional});
try
{
var settings = new AppSettingsReader();
if (settings.GetValue("MaintenanceHomepageOnly", typeof (String)) != null)
routes.MapRoute("MaintenanceHomepageOnly", "{controller}/{action}",
new {controller = "Home", action = "Maintenance"});
}
catch (Exception)
{
}
routes.MapRoute(
"DefaultWithId", // Route name
"{controller}/{action}/{id}", // URL with parameters
new {controller = "Home", action = "Index", id = UrlParameter.Optional} // Parameter defaults
);
// end routes
}
}
}
問題似乎是服務器上的HTTP重定向配置。
如果您嘗試這樣的鏈接有效(請注意您網址中的www部分):
您應該在服務器上檢查HTTP重定向設置。 看一下這個 :
http://www.iis.net/configreference/system.webserver/httpredirect
並檢查web.config文件中的元素httpRedirect。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.