示例#1
0
        public static UriBuilder BuildableUri(this HttpRequest request, BuildableUriOptions options = BuildableUriOptions.None)
        {
            var hostComponents = request.Host.ToUriComponent().Split(':');

            var builder = new UriBuilder
            {
                Scheme = request.Scheme,
                Host   = hostComponents[0],
                Path   = options.HasFlagFast(BuildableUriOptions.IncludePath) ? request.Path : new PathString(""),
                Query  = options.HasFlagFast(BuildableUriOptions.IncludeQuery) ? request.QueryString.ToUriComponent().TrimStart('?') : ""
            };

            if (hostComponents.Length == 2)
            {
                builder.Port = Convert.ToInt32(hostComponents[1]);
            }

            if (IsWellKnownPort(builder))
            {
                builder.Port = -1;
            }

            return(builder);
        }
示例#2
0
 public static bool HasFlagFast(this BuildableUriOptions value, BuildableUriOptions flag)
 {
     return((value & flag) != 0);
 }