将经典ASP Urls路由到MVC路由

时间:2016-10-21 16:59:06

标签: asp.net-mvc iis asp-classic iis-7.5 asp.net-mvc-routing

我在我的MVC项目中创建了一个自定义路由器,如下所示:

public class Classic_ASP_Routes : RouteBase
{
    public override RouteData GetRouteData(HttpContextBase httpContext)
    {
        const string status = "301 Moved Permanently";
        var request = httpContext.Request;
        var response = httpContext.Response;
        var legacyUrl = request.Url.ToString();
        var newUrl = "";

        if (legacyUrl.Contains("eventdetail.asp"))
        {
            // grab the ID from the query string
            int id = int.Parse(legacyUrl.Split('=')[1]);

            newUrl = "/event/" + id;
        }
        else if(legacyUrl.Contains("addeent.asp"))
        {
            newUrl = "/Calendar/Add-Event";
        }

        if (newUrl.Length > 0)
        {
            response.Status = status;
            response.RedirectLocation = newUrl;
            response.End();
        }

        return null;
    }

    public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values)
    {
        return null;
    }
}

然后将它包含在我的routes.config中,如下所示:

routes.Add("ClassicASP", new Classic_ASP_Routes());

有一次,这个WAS在运行IIS 7.5的开发服务器上运行我不得不摆弄IIS处理程序映射,但它最终有效,解析了legaxy asp urls并正确提取了查询字符串参数。

但是,似乎如果我完全触摸IIS设置,处理程序映射设置会以某种方式恢复。我现在可以更长时间地让处理程序正确映射,我发誓,如果我再次使用它,我会把它写下来。

0 个答案:

没有答案
相关问题