Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 可以在Global.asax中使用友好的URL功能吗?_C#_Asp.net_Friendly Url - Fatal编程技术网

C# 可以在Global.asax中使用友好的URL功能吗?

C# 可以在Global.asax中使用友好的URL功能吗?,c#,asp.net,friendly-url,C#,Asp.net,Friendly Url,我正在学习ASP.NET4.5,偶然发现了一篇关于友好URL的帖子。现在我使用的是ASP.NET 4.5,当我创建一个新的ASP.NET项目时,该功能已经启用并安装 假设我有以下URL: 这应映射到以下内容: 这在Users.aspx.cs中运行良好,但是我可以在Global.asax中也使用它吗?我已经尝试过了,以下方法返回空字符串: string a = Request.GetFriendlyUrlFileExtension(); string b = Request.GetFriend

我正在学习ASP.NET4.5,偶然发现了一篇关于友好URL的帖子。现在我使用的是ASP.NET 4.5,当我创建一个新的ASP.NET项目时,该功能已经启用并安装

假设我有以下URL:

这应映射到以下内容:

这在
Users.aspx.cs
中运行良好,但是我可以在
Global.asax
中也使用它吗?我已经尝试过了,以下方法返回空字符串:

string a = Request.GetFriendlyUrlFileExtension();
string b = Request.GetFriendlyUrlFileVirtualPath();
IList<string> c = Request.GetFriendlyUrlSegments();
string a=Request.GetFriendlyUrlFileExtension();
字符串b=Request.GetFriendlyUrlFileVirtualPath();
IList c=Request.GetFriendlyUrlSegments();

我不熟悉您所指的friendlyURL包,但如果您想自己尝试一下,以下是您可以着手编写一些自定义路由的方法:

在您的global.asax中

using System.Web.Routing;

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

    }

    void RegisterRoutes(RouteCollection routes)
    {
        routes.MapPageRoute("Users", "Users/{*queryvalues}", "~/Users.aspx");
    }
然后在Users.aspx.cs中,而不是从

    Request.QueryString["somekey"]
你会从中得到你的价值观

    //This makes an array of string values
    RouteData.Values["queryvalues"].ToString().Split('/')

microsoft有一个例子

我一直在使用友好的URL,下面是我在web表单项目中所做的:

全球ASAX 页面接收查询字符串
您不需要在此配置中拆分querystring值。

是的,不幸的是,这不是我要问的。我试着使用我在
Users.aspx.cs
中询问的方法,它们按预期工作。我在
Global.asax.cs
中尝试了它们,但所有内容都返回一个空字符串。我想我不明白您为什么需要或希望在Global中执行此操作?我正在尝试构建一个授权方法,该方法依赖于路径匹配,由数据库中的一组表支持。也就是说,我需要知道用户请求的确切路径,并过滤掉所有应该是参数的段;我需要在
Global.asax.cs
中执行此操作。我对其他想法持开放态度,因此如果您有想法,请立即提出。我阅读的教程没有告诉我设置任何路由,并且这些方法在
Users.aspx.cs
中按预期工作。然而,我想做的是在
Global.asax.cs
中使用这些方法,不幸的是,它们都返回空字符串。
 public static void RegisterRoutes(RouteCollection routes)
    {
        routes.MapPageRoute("About", "About", "~/About.aspx", true);
        routes.MapPageRoute("Add User", "Add User", "~/Add.aspx", true);
        routes.MapPageRoute("Login", "Login", "~/Login.aspx", true);
        routes.MapPageRoute("Map", "Map", "~/Map.aspx", true);
        routes.MapPageRoute("Register", "Register", "~/Register.aspx", true);
        routes.MapPageRoute(
                                       "ViewList",
                                       "ViewList/{c}/{s}", 
                                       "~/ViewList.aspx", 
                                       true
                                     );
        routes.MapPageRoute(
                                       "ViewUser",
                                       "ViewUser/{id}",
                                       "~/ViewUser.aspx",
                                       true
                                     );
        routes.MapPageRoute(
                                     "MyAccount",
                                     "MyAccount/{id}",
                                     "~/MyAccount.aspx",
                                     true
                                   );
    }
string city = RouteData.Values["c"].ToString();
string state = RouteData.Values["s"].ToString();