IEnumerable GetAll() 10 { 11 var hashCode = _employees.GetHashCode(); 12 WebOperationContext.Current.IncomingRequest.CheckConditionalRetrieve...(hashCode); 13 WebOperationContext.Current.OutgoingResponse.SetETag(hashCode); 14 return _employees;...{ 19 var employee = _employees.FirstOrDefault(e => e.Id == id); 20 if (null == employee) 21 { 22 //WebOperationContext.Current.OutgoingResponse.StatusCode...= HttpStatusCode.NotFound; 23 throw new WebFaultException(HttpStatusCode.NotFound); 24 } 25 26 WebOperationContext.Current.OutgoingResponse.SetETag...(existing.GetHashCode()); 45 46 Delete(employee.Id); 47 _employees.Add(employee); 48 49 WebOperationContext.Current.OutgoingResponse.SetETag
二、 WebOperationContext与条件获取 对于Web HTTP编程模型来说,通过当前WebOperationContext可以很容易地进行条件获取的检测和相相关HTTP报头的设置和获取。...void SetETag(long entityTag); 7: public void SetETag(string entityTag); 8: } 对于客户端来说,它可以通过当前WebOperationContext...4: public string ETag { get; } 5: } 如果客户端需要为请求设置If-Modified-Since和If-None-Match报头,则可以通过当前WebOperationContext...为此我们对EmployeesService的GetAll操作方法进行了如下的改造:我们通过当前WebOperationContext得到表示入栈请求上下文的IncomingWebRequestContext...(hashCode); 13: WebOperationContext.Current.OutgoingResponse.SetETag(hashCode); 14:
二、WebOperationContext与条件更新 服务端进行条件更新检测,以及客户端对If-Match请求报头的设置都可以通过当前的WebOperationContext来完成。...9: throw new WebFaultException(HttpStatusCode.NotFound); 10: } 11: WebOperationContext.Current.OutgoingResponse.SetETag...21: //模拟并发修改 22: existing.Name += Guid.NewGuid().ToString(); 23: 24: WebOperationContext.Current.IncomingRequest.CheckConditionalUpdate...employees.Remove(existing); 26: employees.Add(employee); 27: WebOperationContext.Current.OutgoingResponse.SetETag
WebMessageFormat.Xml)], // and include the following line in the operation body: // WebOperationContext.Current.OutgoingResponse.ContentType...WebMessageFormat.Xml)], // and include the following line in the operation body: // WebOperationContext.Current.OutgoingResponse.ContentType
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); ms.Position = 0; WebOperationContext.Current.OutgoingResponse.ContentType
StreamWriter(ms); sw.AutoFlush = true; sw.Write(_Result); ms.Position = 0; WebOperationContext.Current.OutgoingResponse.ContentType...StreamWriter(ms); sw.AutoFlush = true; sw.Write(_Result); ms.Position = 0; WebOperationContext.Current.OutgoingResponse.ContentType
StreamWriter sw = new StreamWriter(ms); sw.AutoFlush = true; sw.Write(str); ms.Position = 0; WebOperationContext.Current.OutgoingResponse.ContentType
在我们开发新的WCF HTTP版本可以直接访问底层的HTTP请求,并通过操作,而不是通过像WebOperationContext静态API的参数响应。
sw.AutoFlush = true; sw.Write(str); ms.Position = 0; WebOperationContext.Current.OutgoingResponse.ContentType
employees.FirstOrDefault(e => e.Id == id); 11: if (null == employee) 12: { 13: WebOperationContext.Current.OutgoingResponse.StatusCode...employees; 42: } 43: } 值得一提的是,不论是用于获取某个指定ID的员工信息的Get方法,还是用于修改和删除员工记录的Update和Delete方法,当指定ID的员工不存在时都通过WebOperationContext
StreamWriter(ms); sw.AutoFlush = true; sw.Write(returnStr); ms.Position = 0; WebOperationContext.Current.OutgoingResponse.ContentType
领取专属 10元无门槛券
手把手带您无忧上云