[C#] リクエストURL (現在アクセスしているページのURL) を取得する
このページのタグ:[C#] [ASP.NET] [URL]
ASP.NETでリクエストURL(現在アクセスしているページのURL)を取得するコードを紹介します。

概要

ASP.NETでリクエストURLを取得するには、 Request.ApplicationPath, Request.FilePath, Request.Path, Request.PathInfo, Request.PhysicalApplicationPath, Request.PhysicalPath, Request.RawUrl, Request.Url
を用います。

取得できる情報

ApplicationPathアプリケーションが配置されているパス
FilePath現在アクセスしているページのファイルパス
Path現在アクセスしているページのファイルパス(拡張パスを含む)
PathInfo拡張パス
PhysicalApplicationPathマシン上でのファイルの配置ディレクトリのパス
PhysicalPathマシン上でのファイルのパス
RawUrlホスト名を除くURLの文字列
Url.AbsolutePath現在アクセスしているページのファイルパス
Url.AbsoluteUri現在アクセスしているページのURI
Url.Host現在アクセスしているURLのホスト名
Url.LocalPath現在アクセスしているURLのローカルパス (ファイル名と拡張パス)
Url.OriginalString現在アクセスしているURLのもともとの文字列
Url.QueryURLのパラメータ
Url.SchemeURLのスキーマ
Url.UserInfo認証情報

補足

認証が有効なサイトでも、Request時のURLのUserInfoは空になるようです。

サンプルプログラム

UI

下図のUIを作成します。


aspxファイルのコードは下記の通りです。

default.aspx


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="default.aspx.cs" Inherits="RequestURL._default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
  <style type="text/css">
  <!--
    .table tr:nth-child(odd) {
      background-color:#cdeaff;
    }
    .table tr:nth-child(even) {
      background-color:#f0f5ff;
    }
  -->
  </style>
 
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:Table ID="Table1" runat="server" CssClass="table"></asp:Table>
    </div>
    </form>
</body>
</html>

コード

以下のコードを記述します。

default.aspx.cs


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace RequestURL
{
  public partial class _default : System.Web.UI.Page
  {
    protected void Page_Load(object sender, EventArgs e)
    {
      AddTable("ApplicationPath", Request.ApplicationPath);
      AddTable("FilePath", Request.FilePath);
      AddTable("Path", Request.Path);
      AddTable("PathInfo", Request.PathInfo);
      AddTable("PhysicalApplicationPath", Request.PhysicalApplicationPath);
      AddTable("PhysicalPath", Request.PhysicalPath);
      AddTable("RawUrl", Request.RawUrl);
      AddTable("Url.AbsolutePath", Request.Url.AbsolutePath);
      AddTable("Url.AbsoluteUri", Request.Url.AbsoluteUri);
      AddTable("Url.Host", Request.Url.Host);
      AddTable("Url.LocalPath", Request.Url.LocalPath);
      AddTable("Url.OriginalString", Request.Url.OriginalString);
      AddTable("Url.Query", Request.Url.Query);
      AddTable("Url.Scheme", Request.Url.Scheme);
      AddTable("Url.UserInfo", Request.Url.UserInfo);
    }

    private void AddTable(string caption, string value)
    {
      TableRow tr = new TableRow();
      TableCell tc = new TableCell();
      tc.Text = caption;
      tr.Cells.Add(tc);

      tc = new TableCell();
      tc.Text = value;
      tr.Cells.Add(tc);

      Table1.Rows.Add(tr);
    }
  }
}

実行結果

プロジェクトを実行します。

通常のURLの場合

http://localhost:50571/default.aspx
にアクセスした場合、下図の結果が表示されます。

パラメータつきのURLの場合

http://localhost:50571/default.aspx?q=Penguin
のURLでアクセスした場合、下図の結果が表示されます。

拡張パスつきのURLの場合

http://localhost:50571/default.aspx/items/book?q=Penguin
のURLでアクセスした場合、下図の結果が表示されます。拡張パスが"PathInfo"に設定されます。

登録日 :2014-06-06    最終更新日 :2014-07-30
このページのタグ:[C#] [ASP.NET] [URL]
Japanese
プライバシー    iPentecについて
iPentec all rights reserverd. (ISDC)