Beispiel #1
0
 private static string GetfileName(string url)
 {
     if (url.EndsWith("/"))
     {
         url += ".default";
     }
     return(ConfigFileManager.GetConfig <NetConfig>().TempPath + url.Replace("http://", ""));
 }
Beispiel #2
0
 /// <summary>
 /// 直接返回流,如果文件存在且配置为不检查更新则会返回文件流
 /// </summary>
 /// <returns></returns>
 public Stream GetResponseStream()
 {
     if (!ConfigFileManager.GetConfig <NetConfig>().CheckUpdate&& File.Exists(LocalFileName))
     {
         try
         {
             return(GetFileStream(LocalFileName));
         }
         catch (Exception)
         {
         }
     }
     return(GetResponse().GetResponseStream());
 }
Beispiel #3
0
        //public void AddRange(string rangeSpecifier, long range)
        //{
        //    _webRequest.AddRange(rangeSpecifier, range);
        //}



        public HttpWebResponse GetResponse()
        {
            if (ConfigFileManager.GetConfig <NetConfig>().UseCache&& _webRequest.Method.Equals("GET", StringComparison.OrdinalIgnoreCase))
            {
                global::System.IO.FileInfo fileInfo = new FileInfo(LocalFileName); //lockHttpFileHelper.FileInfo;
                if (fileInfo.Exists && fileInfo.Length > 0)
                {
                    _webRequest.IfModifiedSince = fileInfo.LastWriteTime;
                }
                global::System.Net.HttpWebResponse response;
                try
                {
                    response = (global::System.Net.HttpWebResponse)_webRequest.GetResponse();
                }
                catch (WebException exception)
                {
                    response = (HttpWebResponse)exception.Response;
                    if (response.StatusCode != HttpStatusCode.NotModified)
                    {
                        response.Close();
                        throw;
                    }
                }

                if (response.StatusCode == HttpStatusCode.NotModified) //未改变
                {
                    _isFromCacheFieldInfo.SetValue(response, true);
                    Stream fileStream = GetFileStream(fileInfo.FullName);

                    _responseStreamPropertyInfo.SetValue(response, fileStream, null);
                }
                else
                {
                    if (!fileInfo.Directory.Exists)
                    {
                        fileInfo.Directory.Create();
                    }
                    HttpFileStream httpStream = new HttpFileStream(response, fileInfo);
                    _responseStreamPropertyInfo.SetValue(response, httpStream, null);
                }
                _response = response;
                return(response);
            }

            _response = _webRequest.GetResponse() as HttpWebResponse;
            return(_response);
        }