Example #1
0
                public void GivenNullRequest_ThrowsArgumentNullException()
                {
                    Microsoft.AspNetCore.Http.HttpRequest nullRequest = null;
                    Action act = () => nullRequest.GetRawSecurityToken();

                    act.Should().Throw <ArgumentNullException>();
                }
Example #2
0
        /// <summary>获取返回地址</summary>
        /// <param name="request">请求对象</param>
        /// <param name="referr">是否使用引用</param>
        /// <returns></returns>
        public virtual String GetReturnUrl(IHttpRequest request, Boolean referr)
        {
            var url = request.Get("r");

            if (url.IsNullOrEmpty())
            {
                url = request.Get("redirect_uri");
            }
            if (url.IsNullOrEmpty() && referr)
            {
#if __CORE__
                url = request.Headers["Referer"].FirstOrDefault() + "";
#else
                url = request.UrlReferrer + "";
#endif
            }
            if (!url.IsNullOrEmpty() && url.StartsWithIgnoreCase("http"))
            {
                var baseUri = request.GetRawUrl();

                var uri = new Uri(url);
                if (uri != null && uri.Host.EqualIgnoreCase(baseUri.Host))
                {
                    url = uri.PathAndQuery;
                }
            }

            return(url);
        }
Example #3
0
 public static HttpRequestMessage ToHttpRequestMessage(this Microsoft.AspNetCore.Http.HttpRequest req)
 => new HttpRequestMessage()
 .SetMethod(req)
 .SetAbsoluteUri(req)
 .SetHeaders(req)
 .SetContent(req)
 .SetContentType(req);
Example #4
0
        private static IEnumerable <KeyValuePair <string, string> > GetClaims(Microsoft.AspNetCore.Http.HttpRequest httpRequest)
        {
            if (httpRequest == null)
            {
                throw new ArgumentNullException(nameof(httpRequest));
            }

            IIdentity identity = httpRequest.HttpContext?.User?.Identity;

            if (identity == null)
            {
                return(new List <KeyValuePair <string, string> >());
            }

            if (identity is ClaimsIdentity == false)
            {
                return(new List <KeyValuePair <string, string> >());
            }

            ClaimsIdentity claimsIdentity = identity as ClaimsIdentity;

            List <KeyValuePair <string, string> > claims = InternalHelpers.ToKeyValuePair(claimsIdentity);

            return(claims);
        }
Example #5
0
    public static Uri GetUri(this Microsoft.AspNetCore.Http.HttpRequest request)
    {
        if (request == null)
        {
            throw new ArgumentNullException("request");
        }
        if (string.IsNullOrWhiteSpace(request.Scheme))
        {
            throw new ArgumentException("Http request Scheme is not specified");
        }
        if (!request.Host.HasValue)
        {
            throw new ArgumentException("Http request Host is not specified");
        }
        StringBuilder stringBuilder = new StringBuilder();

        stringBuilder.Append(request.Scheme).Append("://").Append((object)request.Host);
        if (request.Path.HasValue)
        {
            stringBuilder.Append(request.Path.Value);
        }
        if (request.QueryString.HasValue)
        {
            stringBuilder.Append((object)request.QueryString);
        }
        return(new Uri(stringBuilder.ToString()));
    }
        /// <summary>
        /// Serialize the <paramref name="source"/>.
        /// </summary>
        public static async Task <RequestData> FromAsync(this RequestData target, HttpRequest source, CancellationToken cancellationToken = default)
        {
            // Verify that we can convert the string to an HttpMethod
            VerifyMethodName(source.Method);
            target.Method = source.Method;

            target.EncodedUrl    = source.GetEncodedUrl();
            target.Headers       = new Dictionary <string, StringValues>();
            target.ContentType   = source.ContentType;
            target.ContentLength = source.ContentLength;
            target.Headers       = CopyWithoutContentHeaders(source.Headers);


            target.BodyAsString = await source.GetRequestBodyAsync();

            return(target);

            void VerifyMethodName(string methodName)
            {
                try
                {
                    _ = new HttpMethod(methodName);
                }
                catch (Exception e)
                {
                    InternalContract.Fail($"The following HTTP method is not recognized: {methodName}: {e.Message}");
                }
            }
        }
Example #7
0
        /// <summary>
        /// Генерация заголовков
        /// </summary>
        /// <param name="request"></param>
        /// <param name="uri"></param>
        /// <returns></returns>
        private static HttpRequestMessage CreateProxyHttpRequest(Microsoft.AspNetCore.Http.HttpRequest request, Uri uri)
        {
            var requestMessage = new HttpRequestMessage();
            var requestMethod  = request.Method;

            if (!HttpMethods.IsGet(requestMethod) &&
                !HttpMethods.IsHead(requestMethod) &&
                !HttpMethods.IsDelete(requestMethod) &&
                !HttpMethods.IsTrace(requestMethod))
            {
                var streamContent = new StreamContent(request.Body);
                requestMessage.Content = streamContent;
            }

            // Copy the request headers
            foreach (var header in request.Headers)
            {
                if (string.Compare(header.Key, "port", StringComparison.OrdinalIgnoreCase) == 0)
                {
                    continue;
                }
                if (!requestMessage.Headers.TryAddWithoutValidation(header.Key, header.Value.ToArray()) && requestMessage.Content != null)
                {
                    requestMessage.Content?.Headers.TryAddWithoutValidation(header.Key, header.Value.ToArray());
                }
            }

            requestMessage.Headers.Host = uri.Authority;
            requestMessage.RequestUri   = uri;
            requestMessage.Method       = new HttpMethod(request.Method);

            return(requestMessage);
        }
 public void Fill(Microsoft.AspNetCore.Http.HttpRequest x)
 {
     if (x.HasFormContentType)
     {
         foreach (var y in x.Form.Select(m => m.Key))
         {
             foreach (Match match in indexDetector.Matches(y))
             {
                 var val = match.Value;
                 if (val[0] == '.' || val[0] == ']')
                 {
                     val = val.Substring(1);
                 }
                 if (val[val.Length - 1] == '.' || val[val.Length - 1] == '[')
                 {
                     val = val.Substring(0, val.Length - 1);
                 }
                 if (match.Index == 0)
                 {
                     this.Add(string.Empty, val);
                 }
                 else
                 {
                     this.Add(y.Substring(0, match.Index), val);
                 }
             }
         }
     }
 }
Example #9
0
        private static Session GetSession(Microsoft.AspNetCore.Http.HttpRequest httpRequest)
        {
            if (httpRequest == null)
            {
                throw new ArgumentNullException(nameof(httpRequest));
            }

            bool   isNewSession = false;
            string sessionId    = null;

            if (httpRequest.HttpContext?.Session != null && httpRequest.HttpContext.Session.IsAvailable == true)
            {
                sessionId = httpRequest.HttpContext.Session.GetString("X-KissLogSessionId");
                if (string.IsNullOrEmpty(sessionId) || string.Compare(sessionId, httpRequest.HttpContext.Session.Id, true) != 0)
                {
                    isNewSession = true;
                    httpRequest.HttpContext.Session.SetString("X-KissLogSessionId", httpRequest.HttpContext.Session.Id);
                }

                sessionId = httpRequest.HttpContext.Session.Id;
            }

            return(new Session
            {
                IsNewSession = isNewSession,
                SessionId = sessionId
            });
        }
Example #10
0
 public static Uri GetAbsoluteUri(this Microsoft.AspNetCore.Http.HttpRequest req)
 {
     var uriBuilder = new UriBuilder()
     {
         Scheme = req.Scheme,
         Host   = req.Host.Host,
         Port   = req.Host.Port.HasValue ? req.Host.Port.Value : default,
Example #11
0
                public async Task GivenNullInput_ReturnsNull()
                {
                    Microsoft.AspNetCore.Http.HttpRequest nullRequest = null;
                    // ReSharper disable once ExpressionIsAlwaysNull
                    var actual = await nullRequest.ToRequestForSigning(_signature);

                    actual.Should().BeNull();
                }
 /// <summary>
 /// Get real client IP from request
 /// </summary>
 /// <param name="request">HttpRequestMessage</param>
 /// <returns>IPAddress</returns>
 public static IPAddress GetClientIp(this Microsoft.AspNetCore.Http.HttpRequest request)
 {
     if (request == null)
     {
         return(null);
     }
     return(request.HttpContext.Connection.RemoteIpAddress);
 }
 /// <summary>
 /// 添加请求头
 /// </summary>
 /// <param name="request">Http请求</param>
 /// <param name="log">日志</param>
 private void AddHeaders(Microsoft.AspNetCore.Http.HttpRequest request, ILog log)
 {
     if (request.Headers == null || request.Headers.Count == 0)
     {
         return;
     }
     log.Params("Headers:").Params(JsonHelper.ToJson(request.Headers));
 }
 /// <summary>
 /// 添加Cookie
 /// </summary>
 /// <param name="request">Http请求</param>
 /// <param name="log">日志</param>
 private void AddCookie(Microsoft.AspNetCore.Http.HttpRequest request, ILog log)
 {
     log.Params("Cookie:");
     foreach (var key in request.Cookies.Keys)
     {
         log.Params(key, request.Cookies[key]);
     }
 }
Example #15
0
 public static IActionResult Run(
     [HttpTrigger(AuthorizationLevel.Function, "put", Route = "createupdateschedulerjob/{name}")]
     Microsoft.AspNetCore.Http.HttpRequest req,
     String name,
     ILogger log,
     ExecutionContext context
     )
 {
     try {
         var config = new ConfigurationBuilder()
                      .SetBasePath(context.FunctionAppDirectory)
                      .AddEnvironmentVariables()
                      .Build();
         var credentials = Methods.GetAzureCredentials();
         SchedulerManagementClient schedulerManagementClient = new SchedulerManagementClient(
             credentials
             );
         Schedule schedule;
         using (var reader = new StreamReader(req.Body))
         {
             try
             {
                 var body = reader.ReadToEnd();
                 log.LogInformation(body);
                 schedule = JsonConvert.DeserializeObject(
                     body,
                     (new Schedule()).GetType()
                     ) as Schedule;
             }
             catch (Newtonsoft.Json.JsonException q)
             {
                 return((ActionResult) new BadRequestObjectResult(q.Message));
             }
         }
         var parsed = ResourceId.FromString(config["scheduler_job_collection_id"]);
         schedulerManagementClient.SubscriptionId = parsed.SubscriptionId;
         var definition = CreateJobDefinition(
             config["queue_scheduler"],
             schedule.message.ToBase64JsonString(),
             schedule.recurrence
             );
         schedulerManagementClient.Jobs.CreateOrUpdate(
             parsed.ResourceGroupName,
             parsed.Name,
             name,
             definition
             );
         return((ActionResult) new OkResult());
     }
     catch (Exception e)
     {
         log.LogError(e.Message);
         log.LogError(e.StackTrace);
         log.LogError(e.Source);
         throw e;
     }
 }
Example #16
0
 public GetRawSecurityToken()
 {
     _request = new DefaultHttpRequest(new DefaultHttpContext())
     {
         Method = HttpMethods.Get,
         Scheme = "https",
         Host   = new HostString("localhost", 443),
         Path   = new PathString("/api")
     };
 }
Example #17
0
        public static string getIPAddress(this Microsoft.AspNetCore.Http.HttpRequest Request)
        {
            string ip = Request.Headers["CF-Connecting-IP"];

            if (ip != null)
            {
                return(ip);
            }
            return(Request.HttpContext.Connection.RemoteIpAddress.ToString());
        }
Example #18
0
        public static KissLog.Http.HttpRequest Create(Microsoft.AspNetCore.Http.HttpRequest httpRequest)
        {
            if (httpRequest == null)
            {
                throw new ArgumentNullException(nameof(httpRequest));
            }

            Session session = KissLog.InternalHelpers.WrapInTryCatch(() => GetSession(httpRequest));

            session = session ?? new Session();

            bool isAuthenticated = httpRequest.HttpContext?.User?.Identity?.IsAuthenticated ?? false;

            KissLog.Http.HttpRequest result = new KissLog.Http.HttpRequest(new KissLog.Http.HttpRequest.CreateOptions
            {
                Url             = new Uri(httpRequest.GetDisplayUrl()),
                HttpMethod      = httpRequest.Method,
                UserAgent       = GetUserAgent(httpRequest.Headers),
                HttpReferer     = GetHttpReferrer(httpRequest.Headers),
                RemoteAddress   = httpRequest.HttpContext?.Connection?.RemoteIpAddress?.ToString(),
                MachineName     = InternalHelpers.GetMachineName(),
                IsNewSession    = session.IsNewSession,
                SessionId       = session.SessionId,
                IsAuthenticated = isAuthenticated
            });

            RequestProperties.CreateOptions propertiesOptions = new RequestProperties.CreateOptions();
            propertiesOptions.Cookies     = InternalHelpers.ToKeyValuePair(httpRequest.Cookies);
            propertiesOptions.Headers     = InternalHelpers.ToKeyValuePair(httpRequest.Headers);
            propertiesOptions.QueryString = InternalHelpers.ToKeyValuePair(httpRequest.Query);
            propertiesOptions.Claims      = GetClaims(httpRequest);

            if (httpRequest.HasFormContentType)
            {
                if (KissLogConfiguration.Options.Handlers.ShouldLogFormData.Invoke(result) == true)
                {
                    propertiesOptions.FormData = InternalHelpers.ToKeyValuePair(httpRequest.Form);
                }
            }

            if (KissLog.InternalHelpers.CanReadRequestInputStream(propertiesOptions.Headers))
            {
                if (KissLogConfiguration.Options.Handlers.ShouldLogInputStream.Invoke(result) == true)
                {
                    propertiesOptions.InputStream = KissLog.InternalHelpers.WrapInTryCatch(() =>
                    {
                        return(ModuleInitializer.ReadInputStreamProvider.ReadInputStream(httpRequest));
                    });
                }
            }

            result.SetProperties(new RequestProperties(propertiesOptions));

            return(result);
        }
Example #19
0
        /// <summary>
        /// 判断是否异步请求
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public static bool IsAjaxRequest(this Microsoft.AspNetCore.Http.HttpRequest request)
        {
            bool isAjax = false;
            var  xreq   = request.Headers.ContainsKey("x-requested-with");

            if (xreq)
            {
                isAjax = request.Headers["x-requested-with"] == "XMLHttpRequest";
            }
            return(isAjax);
        }
Example #20
0
        public static UploadImageRequest ToEntity(this Microsoft.AspNetCore.Http.HttpRequest httpRequest)//(this IFormFile file)
        {
            IFormFile file = httpRequest.Form.Files[0];

            var request = new UploadImageRequest()
            {
                File = file
            };

            return(request);
        }
Example #21
0
 public static string GetAbsoluteUri(this Microsoft.AspNetCore.Http.HttpRequest request)
 {
     return(new StringBuilder()
            .Append(request.Scheme)
            .Append("://")
            .Append(request.Host)
            .Append(request.PathBase)
            .Append(request.Path)
            .Append(request.QueryString)
            .ToString());
 }
        private void SetSubstituteBody(Microsoft.AspNetCore.Http.HttpRequest request)
        {
            var ms = new MemoryStream();

            using var sw = new StreamWriter(ms, Encoding.UTF8, -1, true);
            sw.Write("token=xyzz0WbapA4vBCDEFasx0q6G&team_id=T1DC2JH3J&team_domain=testteamnow&channel_id=G8PSS9T3V&channel_name=foobar&user_id=U2CERLKJA&user_name=roadrunner&command=%2Fwebhook-collect&text=&response_url=https%3A%2F%2Fhooks.slack.com%2Fcommands%2FT1DC2JH3J%2F397700885554%2F96rGlfmibIGlgcZRskXaIFfN&trigger_id=398738663015.47445629121.803a0bc887a14d10d2c447fce8b6703c");
            sw.Flush();
            sw.Close();
            ms.Seek(0, SeekOrigin.Begin);
            request.Body.Returns(ms);
        }
Example #23
0
        private bool TryRetrieveToken(Microsoft.AspNetCore.Http.HttpRequest request, out string token)
        {
            token = null;
            Microsoft.Extensions.Primitives.StringValues authHeaders;
            if (!request.Headers.TryGetValue("Authorization", out authHeaders) || authHeaders.Count() > 1)
            {
                return(false);
            }
            var bearerToken = authHeaders.ElementAt(0);

            token = bearerToken.StartsWith("Bearer ") ? bearerToken.Substring(7) : bearerToken;
            return(true);
        }
 public CoreHttpRequest(Microsoft.AspNetCore.Http.HttpRequest request,
                        IRazorViewEngine razorViewEngine,
                        CancellationToken cancellationToken)
 {
     this.uri               = request.GetAbsoluteUri();
     this.request           = request;
     this.CancellationToken = cancellationToken;
     this.Properties        = new Dictionary <string, object>();
     this.Headers           = request.Headers
                              .Select(kvp => kvp.Key.PairWithValue((string[])kvp.Value))
                              .ToDictionary();
     this.Method          = new HttpMethod(request.Method);
     this.RazorViewEngine = razorViewEngine;
 }
Example #25
0
        public int GetCurrentUser(int currentUser, Microsoft.AspNetCore.Http.HttpRequest request)
        {
            if (request == null)
            {
                return(0);
            }
            if (request.HttpContext.User != null && request.HttpContext.User.Claims != null && request.HttpContext.User.Claims.Count() > 2)
            {
                var user = request.HttpContext.User.Claims.ElementAt(1);
                currentUser = int.Parse(user.Value);
            }

            return(currentUser);
        }
        //Chekc Role in the JWT Token
        public static string ValidateAndGetRole(Microsoft.AspNetCore.Http.HttpRequest R)
        {
            JWTService JWT  = new JWTService("FZeDfgPkyXaDFyMwQfSbIoJhF", "localhost:4200", "localhost:4200");
            string     Role = "";

            foreach (KeyValuePair <string, Microsoft.Extensions.Primitives.StringValues> item in R.Headers)
            {
                if (item.Key == "Authorization")
                {
                    Role = JWT.ValidateToken(item.Value.ToString());
                }
            }
            return(Role);
        }
Example #27
0
 public ToRequestForSigning()
 {
     _httpRequest             = new DefaultHttpContext().Request;
     _httpRequest.Method      = "POST";
     _httpRequest.Scheme      = "https";
     _httpRequest.Host        = new HostString("dalion.eu", 9000);
     _httpRequest.PathBase    = new PathString("/tests");
     _httpRequest.Path        = new PathString("/api/rsc1");
     _httpRequest.QueryString = new QueryString("?query=1&cache=false");
     _httpRequest.Headers[HeaderName.PredefinedHeaderNames.Digest] = "SHA-256=xyz123=";
     _signature = new Signature {
         Headers = new[] { HeaderName.PredefinedHeaderNames.Digest }
     };
 }
Example #28
0
        /// <summary>
        /// Creates a SharePointContext instance with the specified HTTP request.
        /// </summary>
        /// <param name="httpRequest">The HTTP request.</param>
        /// <returns>The SharePointContext instance. Returns <c>null</c> if errors occur.</returns>
        public SharePointContext CreateSharePointContext(HttpRequest httpRequest)
        {
            if (httpRequest == null)
            {
                throw new ArgumentNullException(nameof(httpRequest));
            }

            // SPHostUrl
            Uri spHostUrl = SharePointContext.GetUriFromQueryStringParameter(httpRequest, SharePointContext.SPHostUrlKey);

            if (spHostUrl == null)
            {
                return(null);
            }

            // SPAppWebUrl
            Uri spAppWebUrl = SharePointContext.GetUriFromQueryStringParameter(httpRequest, SharePointContext.SPAppWebUrlKey);

            if (spAppWebUrl == null)
            {
                spAppWebUrl = null;
            }

            // SPLanguage
            string spLanguage = httpRequest.Query[SharePointContext.SPLanguageKey];

            if (string.IsNullOrEmpty(spLanguage))
            {
                return(null);
            }

            // SPClientTag
            string spClientTag = httpRequest.Query[SharePointContext.SPClientTagKey];

            if (string.IsNullOrEmpty(spClientTag))
            {
                return(null);
            }

            // SPProductNumber
            string spProductNumber = httpRequest.Query[SharePointContext.SPProductNumberKey];

            if (string.IsNullOrEmpty(spProductNumber))
            {
                return(null);
            }

            return(CreateSharePointContext(spHostUrl, spAppWebUrl, spLanguage, spClientTag, spProductNumber, httpRequest));
        }
        // https://www.programmersought.com/article/49936898629/
        public static async Task <string> GetRequestBodyAsync(this HttpRequest request)
        {
            FulcrumAssert.IsNotNull(request.Body, CodeLocation.AsString());
            request.EnableBuffering();
            request.Body.Position = 0;
            var sr   = new StreamReader(request.Body);
            var body = await sr.ReadToEndAsync();

            request.Body.Position = 0;
            if (body == "")
            {
                FulcrumAssert.IsTrue(request.ContentLength == null || request.ContentLength.Value == 0, CodeLocation.AsString());
            }
            return(body);
        }
Example #30
0
        /// <summary>
        /// Gets the SharePoint host url from QueryString of the specified HTTP request.
        /// </summary>
        /// <param name="httpRequest">The specified HTTP request.</param>
        /// <returns>The SharePoint host url. Returns <c>null</c> if the HTTP request doesn't contain the SharePoint host url.</returns>
        public static Uri GetUriFromQueryStringParameter(HttpRequest httpRequest, string queryStringParameter)
        {
            if (httpRequest == null) { throw new ArgumentNullException(nameof(httpRequest)); }

            string parameterValue = TokenHandler.EnsureTrailingSlash(httpRequest.Query[queryStringParameter]);
            Uri uriValue;

            if (Uri.TryCreate(parameterValue, UriKind.Absolute, out uriValue) &&
               (uriValue.Scheme == Uri.UriSchemeHttp || uriValue.Scheme == Uri.UriSchemeHttps))
            {
                return uriValue;
            }

            return null;
        }
        /// <summary>
        /// 添加表单参数
        /// </summary>
        /// <param name="request">Http请求</param>
        /// <param name="log">日志</param>
        private async Task AddFormParamsAsync(Microsoft.AspNetCore.Http.HttpRequest request, ILog log)
        {
            if (IsMultipart(request.ContentType))
            {
                return;
            }
            request.EnableBuffering();
            var result = await FileHelper.ToStringAsync(request.Body, isCloseStream : false);

            if (string.IsNullOrWhiteSpace(result))
            {
                return;
            }
            log.Params("表单参数:").Params(result);
        }
Example #32
0
        /// <summary>
        /// Creates a SharePointContext instance with the specified HTTP request.
        /// </summary>
        /// <param name="httpRequest">The HTTP request.</param>
        /// <returns>The SharePointContext instance. Returns <c>null</c> if errors occur.</returns>
        public SharePointContext CreateSharePointContext(HttpRequest httpRequest)
        {
            if (httpRequest == null) { throw new ArgumentNullException(nameof(httpRequest)); }

            // SPHostUrl
            Uri spHostUrl = SharePointContext.GetUriFromQueryStringParameter(httpRequest, SharePointContext.SPHostUrlKey);
            if (spHostUrl == null) { return null; }

            // SPAppWebUrl
            Uri spAppWebUrl = SharePointContext.GetUriFromQueryStringParameter(httpRequest, SharePointContext.SPAppWebUrlKey);
            if (spAppWebUrl == null) { spAppWebUrl = null; }

            // SPLanguage
            string spLanguage = httpRequest.Query[SharePointContext.SPLanguageKey];
            if (string.IsNullOrEmpty(spLanguage)) { return null; }

            // SPClientTag
            string spClientTag = httpRequest.Query[SharePointContext.SPClientTagKey];
            if (string.IsNullOrEmpty(spClientTag)) { return null; }

            // SPProductNumber
            string spProductNumber = httpRequest.Query[SharePointContext.SPProductNumberKey];
            if (string.IsNullOrEmpty(spProductNumber)) { return null; }

            return CreateSharePointContext(spHostUrl, spAppWebUrl, spLanguage, spClientTag, spProductNumber, httpRequest);
        }
Example #33
0
 /// <summary>
 /// Creates a SharePointContext instance.
 /// </summary>
 /// <param name="spHostUrl">The SharePoint host url.</param>
 /// <param name="spAppWebUrl">The SharePoint app web url.</param>
 /// <param name="spLanguage">The SharePoint language.</param>
 /// <param name="spClientTag">The SharePoint client tag.</param>
 /// <param name="spProductNumber">The SharePoint product number.</param>
 /// <param name="httpRequest">The HTTP request.</param>
 /// <returns>The SharePointContext instance. Returns <c>null</c> if errors occur.</returns>
 protected abstract SharePointContext CreateSharePointContext(Uri spHostUrl, Uri spAppWebUrl, string spLanguage, string spClientTag, string spProductNumber, HttpRequest httpRequest);
Example #34
0
        protected override SharePointContext CreateSharePointContext(Uri spHostUrl, Uri spAppWebUrl, string spLanguage, string spClientTag, string spProductNumber, HttpRequest httpRequest)
        {
            string contextTokenString = TokenHandler.GetContextTokenFromRequest(httpRequest);
            if (string.IsNullOrEmpty(contextTokenString))
            {
                return null;
            }

            SharePointContextToken contextToken = null;
            try
            {
                contextToken = TokenHandler.ReadAndValidateContextToken(contextTokenString, httpRequest.Host.Value);
            }
            //catch (WebException)
            //{
            //    return null;
            //}
            catch (AudienceUriValidationFailedException)
            {
                return null;
            }

            return new SharePointAcsContext(spHostUrl, spAppWebUrl, spLanguage, spClientTag, spProductNumber, contextTokenString, contextToken, Configuration);
        }