public void Process() { var builder = new UriBuilder(BaseRequestUri) { Path = "/files/" + mFileName.Replace('\\', '/') }; var request = WebRequest.CreateHttp(builder.Uri); if (mBaseFile != null) { if (mEntry.Hash.HasValue == false) { mEntry.Hash = mBaseFile.CalculateHash(); } request.Headers.Add("X-Local-Version", "" + mEntry.Hash.Value); } if (!string.IsNullOrEmpty(AuthorizationHeader)) { request.Headers.Add("Authorization", AuthorizationHeader); } request.Method = "GET"; HttpWebResponse response; try { response = request.GetResponse() as HttpWebResponse; } catch (WebException ex) { if (ex.Response == null) { throw; } response = ex.Response as HttpWebResponse; } if (response == null) { Exists = false; return; } switch (response.StatusCode) { case HttpStatusCode.OK: OnNewFileReceived(response); break; case HttpStatusCode.NotModified: if (mBaseFile != null) { Exists = true; inputStream = mBaseFile.DataStream; } else { Exists = false; } break; default: Exists = false; break; } }