verwenden, ich will nur zurück 304 Nicht als solche Modifiziert:verhindern, dass unerwünschte Header, wenn 304 Rückkehr ServiceStack Not Modified mit ServiceStack
HTTP/1.1 304 Not Modified
Aber ServiceStack fügt viele andere unerwünschte (Rückkehr HttpResult mit 304 Code) headers als solcher:
HTTP/1.1 304 Not Modified
Content-Length: 0
Content-Type: application/json
Server: Microsoft-HTTPAPI/2.0
X-Powered-By: ServiceStack/3.94 Win32NT/.NET
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Headers: Content-Type
Date: Tue, 07 Aug 2012 13:39:19 GMT
Wie kann ich verhindern, dass die anderen Header ausgegeben werden? Ich habe verschiedene Ansätze mit HttpResult versucht, einen Dummy-Inhaltstyp Filter registrieren, aber wie der Name impliziert nur Steuerinhalte, nicht die Header oder andere aufgeführt here. Ich habe auch versucht, mein eigenes IHttpResult Derivat mit IStreamWriter und IHasOptions mit den gleichen Ergebnissen zu implementieren: ServiceStack fügt unerwünschte Header hinzu.
Dank
aktualisieren
konnte content-type
entfernen, indem die folgende verwenden, aber einige Header sind noch vorhanden heißt content-length
, server
und date
.
public override object OnGet(FaultTypes request)
{
var result = new HttpResult
{
StatusCode = HttpStatusCode.NotModified,
StatusDescription = "Not Modified", // Otherwise NotModified written!
};
// The following are hacks to remove as much HTTP headers as possible
result.ResponseFilter = new NotModifiedContentTypeWriter();
// Removes the content-type header
base.Request.ResponseContentType = string.Empty;
return result;
}
class NotModifiedContentTypeWriter : ServiceStack.ServiceHost.IContentTypeWriter
{
ServiceStack.ServiceHost.ResponseSerializerDelegate ServiceStack.ServiceHost.IContentTypeWriter.GetResponseSerializer(string contentType)
{
return ResponseSerializerDelegate;
}
void ServiceStack.ServiceHost.IContentTypeWriter.SerializeToResponse(ServiceStack.ServiceHost.IRequestContext requestContext, object response, ServiceStack.ServiceHost.IHttpResponse httpRes)
{
}
void ServiceStack.ServiceHost.IContentTypeWriter.SerializeToStream(ServiceStack.ServiceHost.IRequestContext requestContext, object response, System.IO.Stream toStream)
{
}
string ServiceStack.ServiceHost.IContentTypeWriter.SerializeToString(ServiceStack.ServiceHost.IRequestContext requestContext, object response)
{
return string.Empty;
}
public void ResponseSerializerDelegate(ServiceStack.ServiceHost.IRequestContext requestContext, object dto, ServiceStack.ServiceHost.IHttpResponse httpRes)
{
}
}
Danke für die Antwort, aber das entfernt nur die CORS, nicht die anderen. Ich noch habe HTTP/1.1 304 Not Content-Length Geändert: 0 Content-Type: application/json Gültig bis: Do., 16. August 2012 16.20.25 GMT Server: Microsoft-HTTPAPI/2.0 Datum: Thu, 16 Aug 2012 16:20:24 GMT –
Die ausgegebenen Kopfzeilen, die nicht in 'GlobalResponseHeaders' sind oder sich mit' HttpResult' pro Dienst hinzugefügt haben, stammen nicht von ServiceStack. IIS/ASP.NET kann eigene Header hinzufügen. – mythz
Nicht mit IIS/ASP.Net, nur Konsolen-App-Test. Scheint hinzugefügt von JSON Serializer und anderen. Wie kann ich diese kontrollieren? –