如何使用global.asax文件重写网址

时间:2019-04-12 14:17:41

标签: c#-4.0 iis-7 asp.net-4.0 global-asax

我正在使用Web项目。现在,我陷入了URL重写的困境。我用谷歌搜索出来,但我无法为此解决方案。我有一个这样的global.asax文件。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
using System.Web.Routing;

namespace Admin_Staff_Care
{
    public partial class Global : System.Web.HttpApplication
    {

        protected void Application_Start(object sender, EventArgs e)
        {
            RegisterRoutes(RouteTable.Routes);
        }

        static void RegisterRoutes(RouteCollection routes)
        {
            routes.Add("alaram_list", new Route("alaram list", new CustomRouteHandler("~/alaram_list.aspx")));
            routes.Add("alaram_view", new Route("alaram view", new CustomRouteHandler("~/alaram_view.aspx")));
            routes.Add("assign_pricelist_to_party_type", new Route("assign pricelist to party type", new CustomRouteHandler("~/assign_pricelist_to_party_type.aspx")));
            routes.Add("assign_tour_route_tostaff", new Route("assign tour route tostaff", new CustomRouteHandler("~/assign_tour_route_tostaff.aspx")));
            routes.Add("change_request_list", new Route("change request list", new CustomRouteHandler("~/change_request_list.aspx")));
            routes.Add("collection_list", new Route("collection list", new CustomRouteHandler("~/collection_list.aspx")));
            routes.Add("collection_view", new Route("collection view", new CustomRouteHandler("~/collection_view.aspx")));
            routes.Add("complain_list", new Route("complain list", new CustomRouteHandler("~/complain_list.aspx")));
            routes.Add("complain_view", new Route("complain view", new CustomRouteHandler("~/complain_view.aspx")));
            routes.Add("dashboard", new Route("dashboard", new CustomRouteHandler("~/dashboard.aspx")));
            routes.Add("data_grid", new Route("data grid", new CustomRouteHandler("~/data_grid.aspx")));
            routes.Add("delete_old_data", new Route("delete old data", new CustomRouteHandler("~/delete_old_data.aspx")));
            routes.Add("delivery_generate", new Route("delivery generate", new CustomRouteHandler("~/delivery_generate.aspx")));
            routes.Add("delivery_priority", new Route("delivery priority", new CustomRouteHandler("~/delivery_priority.aspx")));
        }

        protected void Session_Start(object sender, EventArgs e)
        {

        }

        protected void Application_BeginRequest(object sender, EventArgs e)
        {

        }

        protected void Application_AuthenticateRequest(object sender, EventArgs e)
        {

        }

        protected void Application_Error(object sender, EventArgs e)
        {

        }

        protected void Session_End(object sender, EventArgs e)
        {

        }

        protected void Application_End(object sender, EventArgs e)
        {

        }
    }
}

这是我的处理程序代码,留在App_code目录中

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Security;
using System.Text;
using System.Threading.Tasks;
using Microsoft.VisualBasic;
using System.Web.Routing;
using System.Web.Compilation;
using System.Web;
using System.Web.UI;

public class CustomRouteHandler : IRouteHandler
{
    private string _virtualPath;

    public CustomRouteHandler(string vPath)
    {
        _virtualPath = vPath;
    }
    public string VirtualPath
    {
        get
        {
            return _virtualPath;
        }
        private set
        {
            _virtualPath = value;
        }
    }

    public IHttpHandler GetHttpHandler(RequestContext requestContext)
    {
        var redirectPage = (dynamic)null;
        redirectPage = BuildManager.CreateInstanceFromVirtualPath(VirtualPath, typeof(Page));
        return redirectPage;
    }
}

当托管到iis 7.0时,这怎么会不起作用,这给了我这样的错误:

enter image description here

-------------------------------已更新------------ ------------------- 这是我的网络配置代码:

<?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
  <system.webServer>
<modules runAllManagedModulesForAllRequests="true">
      <add name="UrlRoutingModule"
         type="System.Web.Routing.UrlRoutingModule, 
               System.Web.Routing, 
               Version=3.5.0.0, 
               Culture=neutral, 
               PublicKeyToken=31BF3856AD364E35"/>
    </modules>
    <defaultDocument>
      <files>
        <clear/>
        <add value="Login.aspx"/>
      </files>
    </defaultDocument>
    <validation validateIntegratedModeConfiguration="false"/>
    <handlers>
      <remove name="ChartImageHandler"/>
      <add name="ReportViewerWebControlHandler" preCondition="integratedMode" verb="*" path="Reserved.ReportViewerWebControl.axd" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
      <add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD,POST" path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
   <add name="UrlRoutingHandler" 
         preCondition="integratedMode" 
         verb="*" 
         path="UrlRouting.axd" 
         type="System.Web.HttpForbiddenHandler, 
               System.Web, Version=2.0.0.0, 
               Culture=neutral, 
               PublicKeyToken=b03f5f7f11d50a3a" />
  </handlers>
  </system.webServer>
  <system.web>
    <customErrors mode="Off"/>
  </system.web>
</configuration>

请帮助我脱离这个家伙

0 个答案:

没有答案