Asp.net mvc 2 如何获取调用我的MVC2控制器的完整请求?

Asp.net mvc 2 如何获取调用我的MVC2控制器的完整请求?,asp.net-mvc-2,Asp.net Mvc 2,新手问题…对不起;-) 我必须在一个复杂的web应用程序中编写并集成一个新网站 我的新(MVC2)网站将托管在一个单独的服务器上,只有当用户单击已经存在的复杂网站中的链接时才会调用 表示我(!)定义了调用我的(!)新网站的URL 但是“他们”(调用的、已经存在的、复杂的web应用程序/网站)将向url添加一个属性。此属性是sessionID 好的,我想我已经了解到这调用了我的(MVC2)控制器 但是我如何在我的(MVC2)控制器中获得“调用URL”(包括添加的sessionID) 希望有人能理解

新手问题…对不起;-)

我必须在一个复杂的web应用程序中编写并集成一个新网站

我的新(MVC2)网站将托管在一个单独的服务器上,只有当用户单击已经存在的复杂网站中的链接时才会调用

表示我(!)定义了调用我的(!)新网站的URL

但是“他们”(调用的、已经存在的、复杂的web应用程序/网站)将向url添加一个属性。此属性是sessionID

好的,我想我已经了解到这调用了我的(MVC2)控制器

但是我如何在我的(MVC2)控制器中获得“调用URL”(包括添加的sessionID)

希望有人能理解我的要求;-)

提前谢谢


我只想分享我的小解析器——希望它能帮助别人

也要求像

(Request.Url.Query =) "?sessionID=12345678901234567890123456789012&argumentWithoutValue&x=1&y&z=3"
将被很好地解析。 这是我的代码:

Hashtable attributes = new Hashtable();
string query = Request.Url.Query;

string[] arrPairs = query.Split('&');       // ...?x=1&y=2
if (arrPairs != null)
{
  foreach(string s in arrPairs)
  {
     if (!String.IsNullOrEmpty(s))
     {
        string onePair = s.Replace("?", "").Replace("&", "");

        if (onePair.Contains("="))
        {
          string[] arr = onePair.Split('=');
          if (arr != null)
          {
            if (arr.Count() == 2)
            {
               attributes.Add(arr[0], arr[1]);
            }
          }
        }
        else
        {
          // onePair does not contain a pair!
          attributes.Add(onePair, "");
        }
      }
    }

在控制器中,您仍然可以直接访问请求对象,因此可以使用Request.Url等


这是否回答了您的问题,或者是您需要的其他内容?

在控制器中,您仍然可以直接访问请求对象,因此可以使用Request.Url等


这是否回答了您的问题,还是您需要的其他东西?

您真的应该将URL和路由设置为更像MVC。您正在调用的URL应为:

newapp/controller/action/sessionId
然后设置您的路线:

routes.MapRoute(
    "sessionId",
    "{controller}/{action}/{sessionId}",
    new { controller = "controller", action = "action", sessionId = 0 });
然后在控制器中:

public ActionResult Action(int sessionId)
{

}

您真的应该将URL和路由设置为更像MVC。您正在调用的URL应为:

newapp/controller/action/sessionId
然后设置您的路线:

routes.MapRoute(
    "sessionId",
    "{controller}/{action}/{sessionId}",
    new { controller = "controller", action = "action", sessionId = 0 });
然后在控制器中:

public ActionResult Action(int sessionId)
{

}

很好的一点,如果@uwe123想这样做,那么它就不需要在控制器内查询请求对象(它确实允许您访问原始URL等)是的,就是这样!正确设置MapRoute并定义如何调用我的新网站!当我需要进一步解析请求时,我将使用“stringquery=request.URL.query;”。。。非常好,谢谢你的快速回复!很好的一点,如果@uwe123想这样做,那么它就不需要在控制器内查询请求对象(它确实允许您访问原始URL等)是的,就是这样!正确设置MapRoute并定义如何调用我的新网站!当我需要进一步解析请求时,我将使用“stringquery=request.URL.query;”。。。非常好,谢谢你的快速回复!非常感谢您的快速回复。“stringquery=Request.URL.query;”我基本上就是这样搜索的。。。但是MVC有一个很好的“地图路线”。。。所以我先试试这个。谢谢非常感谢您的快速回复。“stringquery=Request.URL.query;”我基本上就是这样搜索的。。。但是MVC有一个很好的“地图路线”。。。所以我先试试这个。谢谢