将框架从2.0升级到4.0后,URL重写显示404错误

时间:2014-03-31 12:15:57

标签: c# asp.net iis url-rewriting url-routing

我刚刚将我的网站框架从2.0更改为4.0。我收到错误HTTP错误404.0 - 每当我尝试打开URL重写网页时都找不到。

它在Framework 2.0的时候运行良好,不知道现在有什么问题。我有很多东西,但没有得到任何适当的解决方案。

请帮我解决问题。

我的代码如下:

http://www.theprojectjugaad.com/PlacementAssistance.html -> Not Working
http://www.theprojectjugaad.com/PlacementAssistance.aspx -> Working

Global.asax:

    void Application_Start(object sender, EventArgs e)
    {
        RegisterRoutes();
    }

    void Application_BeginRequest(object sender, EventArgs ex)
    {
        if (!Request.Url.Host.Equals("localhost")
            && !Request.Url.Host.ToString().Contains("www.theprojectjugaad.com")
            && Request.Url.Host.ToString().Contains("theprojectjugaad.com"))
        {
            string Result = string.Concat(
            "http://",
            Request.Url.Authority.Replace("theprojectjugaad.com", "www.theprojectjugaad.com"),
            HttpContext.Current.Response.ApplyAppPathModifier(Request.Path),
            Request.Url.Query);

            HttpContext.Current.Response.Redirect(Result, true);
        }
    }

    private static void RegisterRoutes()
    {
        System.Web.Routing.RouteTable.Routes.Add(
                "PlacementAssistance", new System.Web.Routing.Route("PlacementAssistance.html",
                                    new RouteHandler("~/PlacementAssistance.aspx")));
    }

RouteHandler.cs:

    public RouteHandler(string virtualPath)
    {
        _virtualPath = virtualPath;
    }

    public IHttpHandler GetHttpHandler(RequestContext requestContext)
    {
        var display = BuildManager.CreateInstanceFromVirtualPath(
                        _virtualPath, typeof(Page)) as IDisplay;
        return display;
    }

     string _virtualPath;

IDisplay.cs:

public interface IDisplay : IHttpHandler
{

}

web.config:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
      <remove name="Session" />
      <add name="Session" type="System.Web.SessionState.SessionStateModule" preCondition="" />
    </modules>
    <validation validateIntegratedModeConfiguration="false" />
    <handlers>
      <remove name="UrlRoutingHandler" />
    </handlers>
    <rewrite>
      <rules>
        <remove name="Plesk. SEO-safe redirect for http://www.theprojectjugaad.com" />
        <rule name="Plesk. SEO-safe redirect for http://www.theprojectjugaad.com" enabled="false" patternSyntax="Wildcard" stopProcessing="true">
          <match url="*" />
          <conditions>
            <add input="{HTTP_HOST}" pattern="www.theprojectjugaad.com" />
            <add input="{HTTPS}" pattern="OFF" />
          </conditions>
          <serverVariables />
          <action type="Redirect" url="http://theprojectjugaad.com/{R:1}" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>

1 个答案:

答案 0 :(得分:0)

什么是无法使用的网址?

我看到的是你已经将.html的网址更正为.aspx并且有效。