我在这个网站上看过一些关于错误 404 的讨论。但我找不到和我一样的。
我有一个使用 ASP.NET MVC 4 构建的应用程序。当我在 Visual Studio 2010 中运行时,url 路由完全没有问题。但是,当我将应用程序发布到 IIS7.5 的默认 Web 下名为“MyCompany”的 Windows 2008 R2 Enterprise 服务器时站点为名为“Test”的应用程序,路由url缺少应用程序名称“Test ”。从而导致错误 404。
该 url 应该是“http://MyCompany/ Test /Home/Index?fileType=Fin”。但是它显示“http://MyCompany/Home/Index?fileType=Fin”。
如果我将应用程序部署到不同的端口,例如 8080,它可以与“http://MyCompany: 8080/Test /Home/Index?fileType=Fin”一起正常工作。
如果有人可以提供帮助,请提前致谢。
我的路线功能是 -
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
我的 WebServer 配置是 -
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true" />
<handlers>
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1048576000" />
</requestFiltering>
</security>
</system.webServer>
更新:
Robert 让我想起了 Javascript 的潜在问题。他是对的。再次查看我的代码后,我找到了问题的位置。这个功能 -
function OnChange(dropdown) {
var myindex = dropdown.selectedIndex;
top.location.href = "Home/Index?fileType=" + dropdown.options[myindex].value;
return true;
}
应该 -
function OnChange(dropdown) {
var myindex = dropdown.selectedIndex;
top.location.href = "@Url.Content("~/")" + "Home/Index?fileType=" + dropdown.options[myindex].value;
return true;
}