我可以在C#中扩展Request方法吗?

时间:2011-12-17 03:32:40

标签: c#

我有以下代码:

public static string FormatHostAndUrl(this HttpSessionStateBase session)
    {
        var a = session["CurrentHost"];
        var b = session["CurrentUrl"];
        var c = string.Format("http://{0}{1}", session["CurrentHost"], new Uri((string)session["currentUrl"]).PathAndQuery);
        return string.Format("http://{0}{1}", session["CurrentHost"], new Uri((string)session["currentUrl"]).PathAndQuery);
    }

我用它来获取包括Port在内的确切URL。使用azure系统,我使用它似乎是提供正确URL的唯一代码组合。

我得到会话变量

Session["CurrentUrl"] = Request.Url.ToString();
Session["CurrentHost"] = Request.Headers["Host"];

我想要做的是扩展Request对象,以便我可以这样做:

Session["TheRealURLI Need"] = Request.RealURL();

是否可以使用扩展方法执行此操作?有哪些方法可以实现FormatHostAndUrl方法的功能?

1 个答案:

答案 0 :(得分:6)

public static class Extensions
{
    public static string GetRealUrl(this HttpRequest request)
    {
        return "will the real url please stand up?";
    }
}

编辑:这里的重点是你扩展,甚至是密封的。 如何获得HttpRequest对象是无关紧要的,无论是通过Request属性还是通过任何其他方式。你扩展了类型。该物业将效仿。