internal async Task <FileSystemResult <T> > CreateMetadataStream <T>(string url, byte[] postdata = null, string contenttype = "application/x-www-form-urlencoded", HttpMethod method = null) where T : class { bool retry = false; do { if (method == null) { method = HttpMethod.Get; } WebParameters pars = new WebParameters(new Uri(url)); pars.Method = method; if (postdata != null) { pars.PostData = postdata; pars.PostEncoding = contenttype; if (method == null || method == HttpMethod.Get) { pars.Method = HttpMethod.Post; } } if (UserAgent != null) { pars.UserAgent = UserAgent; } if (Token != null) { NameValueCollection nm = new NameValueCollection(); nm.Add("Authorization", "Bearer " + Token.AccessToken); pars.Headers = nm; } using (WebStream w = await WebStreamFactory.Instance.CreateStreamAsync(pars)) { if ((w.StatusCode == HttpStatusCode.OK) || (w.StatusCode == HttpStatusCode.Created) || (w.StatusCode == HttpStatusCode.Accepted) || (w.StatusCode == HttpStatusCode.NoContent)) //TODO move this to a parameter { StreamReader rd = new StreamReader(w); string d = await rd.ReadToEndAsync(); if (typeof(T).Name.Equals("string", StringComparison.InvariantCultureIgnoreCase)) { return(new FileSystemResult <T>((T)(object)d)); } return(new FileSystemResult <T>(JsonConvert.DeserializeObject <T>(d))); } if (w.StatusCode != HttpStatusCode.Unauthorized || retry) { return(new FileSystemResult <T>("'url' responds with Http code: " + w.StatusCode)); } retry = true; await MayRefreshToken(true); } } while (true); }
/// <summary> /// 当页面事件发生时 /// </summary> /// <param name="sourceControl"></param> /// <param name="eventArgument"></param> protected virtual void BeforeEventRaise(IPostBackEventHandler sourceControl, string eventArgument) { if (!(sourceControl is PageNavigation) && _controls_auto_process.ContainsKey(((Control)sourceControl).ID)) { //执行预调用logic WebParameters.SetValue("__CurrentEventArgs", ComFunc.nvl(eventArgument)); WebParameters.RequestResourceName = this.PageName; WebParameters.Action = PostBackActionKey.POST_BACK_EVENT + "." + ((Control)sourceControl).ID; CallLogic(); //回写页面数据 SetPageDataBind(); SetPageModelValue(); } }