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

Sam*_*tar 1 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);
    }
Run Code Online (Sandbox Code Playgroud)

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

我得到了会话变量

Session["CurrentUrl"] = Request.Url.ToString();
Session["CurrentHost"] = Request.Headers["Host"];
Run Code Online (Sandbox Code Playgroud)

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

Session["TheRealURLI Need"] = Request.RealURL();
Run Code Online (Sandbox Code Playgroud)

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

Amy*_*Amy 6

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

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