headers example c# http-headers

c# - example - Cabecera de respuesta HTTP, formato para "Expires"



httpwebrequest authorization header c# (4)

No es necesario pasar la cadena y establecer el encabezado. Todo lo que necesitas es establecer la propiedad LastModified:

WebOperationContext.Current.OutgoingResponse.LastModified = DateTime.Now; // DataTime.UtcNow;

Ni siquiera necesita preocuparse por pasar la hora UTC, se lo maneja.

Estoy configurando esto en C # con esta línea:

WebOperationContext.Current.OutgoingResponse.Headers.Add(HttpResponseHeader.Expires, DateTime.Now.AddSeconds(10).ToString());

Ahora sé que el formato está apagado, ya que espera lo siguiente: Mar, 06 de diciembre 2011 20:24:15 GMT

¿Hay alguna clase en .NET que implemente IFormatProvider que pueda aprovechar aquí? ¿O necesitaré crear el mío?



Terminé creando esto:

using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace WcfService1 { public static class HttpExpiresFormat { private enum Month { Jan = 1, Feb = 2, Mar = 3, Apr = 4, May = 5, Jun = 6, Jul = 7, Aug = 8, Sept = 9, Oct = 10, Nov = 11, Dec = 12 } public static string HttpExpireDate(double secondsToAdd) { DateTime dateTime = DateTime.Now; string dayOfWeek = ConvertDayToSmall(dateTime.DayOfWeek.ToString()); string day = dateTime.Day < 10 ? "0" + dateTime.Day.ToString() : dateTime.Day.ToString(); string month = ((Month)dateTime.Month).ToString(); string year = dateTime.Year.ToString(); char[] trim = new char[] { ''.'' }; string substring = dateTime.AddHours(5).AddSeconds(secondsToAdd).TimeOfDay.ToString(); string time = substring.Remove(substring.LastIndexOf(''.'')) + " GMT"; return string.Format("{0}, {1} {2} {3} {4}", dayOfWeek, day, month, year, time); } private static string ConvertDayToSmall(string day) { switch (day) { case "Monday": return "Mon"; case "Tuesday": return "Tue"; case "Wednesday": return "Wed"; case "Thursday": return "Thu"; case "Friday": return "Fri"; default: return null; } } } }


Yo uso DateTime.UtcNow.AddDays(30).ToString("R")

Desde MSDN :

El especificador de formato estándar "R" o "r" representa una cadena de formato de fecha y hora personalizada definida por la propiedad DateTimeFormatInfo.RFC1123Pattern . El patrón refleja un estándar definido y la propiedad es de solo lectura. Por lo tanto, siempre es el mismo, independientemente de la cultura utilizada o del proveedor de formato suministrado. La cadena de formato personalizado es "ddd, dd MMM yyyy HH '':'' mm '':'' ss ''GMT''". Cuando se utiliza este especificador de formato estándar, la operación de formato o análisis siempre utiliza la cultura invariable