我在RouteConfig.cs中有以下路线:
routes.MapRoute(
"MyLegacyRoute",
"Content/bootstrap.css",
new { controller = "Legacy", action = "GetLegacyUrl", legacyUrl = "someUrl" });
~/Content/bootstrap.css
存在,而不是在我导航到http://localhost:27541/Content/bootstrap.css
时显示其内容,我想点击GetLegacyUrl
控制器中的Legacy
操作。
我已将此添加到Web.config:
<system.webServer>
<handlers>
<add name="UrlRoutingHandler" path="/Content/*" verb="GET" type="System.Web.Routing.UrlRoutingHandler" />
...
和
<system.web>
<httpRuntime targetFramework="4.5" relaxedUrlToFileSystemMapping="true"/>
...
但是,当我访问http://localhost:27541/Content/bootstrap.css
时,我收到此错误:
&#39; /&#39;中的服务器错误应用。
无法创建抽象类 描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的更多信息。
异常详细信息:System.MissingMethodException:无法创建抽象类。
我的控制器看起来像这样:
public class LegacyController : Controller
{
public ActionResult GetLegacyUrl(string legacyUrl)
{
return View((object)legacyUrl);
}
}
我的观点(GetLegacyUrl.cshtml)如下所示:
@model string
@{
ViewBag.Title = "GetLegacyUrl";
Layout = null;
}
<h2>GetLegacyUrl</h2>
The URL requested was @Model
我正在尝试这样做,以便我可以了解有关路由的更多信息。
如何成功使用此路线?
答案 0 :(得分:0)
我把它放在RouteConfig.cs
:
routes.RouteExistingFiles = true;
将preCondition
值设为空字符串:
<add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
在此文件中:C:\Users\user.name\Documents\IISExpress\config\applicationhost.config
我在Adam Freeman的Pro ASP.NET MVC5书中找到了第99/115页第16章的答案。
我还删除了我在Web.config中添加的处理程序并删除了relaxedUrlToFileSystemMapping="true"
,因为它在MVC5中不起作用。