是的,您可以通过多种方式实现此目的。由于您使用的是 ASP.NET MVC,我建议您更改路由。
第一步是编辑 web.config 文件并添加适当的处理程序。这会将所有带有 .aspx 的文件指向TransferRequestHandler。如果您删除通配符*,您可以指定您想要处理的确切文件名(这可能不是您的需要所必需的)。你应该在<system.webServer><handlers> 标签之间添加这个:
<add name="AspxFileHandler" path="*.aspx" verb="GET" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
然后您将需要编辑您可以在 App_Start -> RouteConfig.cs 下找到的路由配置。如果服务器上有现有的 webform 文件,那么您需要添加:
routes.RouteExistingFiles = true;
现在添加自定义路线:
routes.MapRoute(
name: "Services",
url: "Services.aspx",
defaults: new { controller = "Services", action = "Index" }
);
总而言之,您的 web.config 应该如下所示:
<system.webServer>
<handlers>
<add name="AspxFileHandler" path="*.aspx" verb="GET" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
<remove name="BlockViewHandler"/>
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>
你的 RouteConfig 是这样的:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.RouteExistingFiles = true;
routes.MapRoute(
name: "Services",
url: "Services.aspx",
defaults: new { controller = "Services", action = "Index" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}