2016-10-11 4 views
1

Ich versuche zu folgen this Guide und speichern Sie die Dateien in einem Unterordner.MVC: Serve-Datei mit HTTP-Header

Die OneSignal-Anleitung fragt jedoch, ob diese Dateien mit dem zusätzlichen HTTP-Header Service-Worker-Allowed: / geliefert werden sollen. Wie mache ich das in Asp.Net MVC?

+0

Zeigen Sie den Code, der die Datei tatsächlich dient – haim770

Antwort

2

Sie können in Ihrem Controller-Aktion verwenden:

this.Response.Headers.Add("Service-Worker-Allowed","/"); 

Hope this Hilfe :-)

Edit: Ein besserer Weg, dies zu tun, ist eine Aktion Filter zu erstellen, um automatisch diesen Header hinzufügen:

public class WorkerAllowedAttribute : ActionFilterAttribute 
{ 
    public override void OnActionExecuted(ActionExecutedContext filterContext) 
    { 
     filterContext.HttpContext.Response.Headers.Add("Service-Worker-Allowed", "/"); 
     base.OnActionExecuted(filterContext); 
    } 
} 

und Sie können es auf Ihre Aktion setzen (oder Ihr Controller):

public partial class HomeController 
{ 
    [WorkerAllowed] 
    public ActionResult Index() 
    { 
     return View(); 
    } 
} 
+0

Dies funktioniert nicht für mich. Versucht, folgenden Code zu verwenden, in dem sich die Dateien befinden: Skripte/Benutzerdefiniert/OneSignal dir: public ActionResult OneSignal (Zeichenfolgen-ID) { this.Response.Headers.Add ("Service-Worker-Allowed", "/"); Rückgabedatei ("~/Scripts/Benutzerdefiniert/oneSignal /" + id, System.Net.Mime.MediaTypeNames.Application.Octet, Path.GetFileName ("~/Scripts/Benutzerdefiniert/oneSignal /" + id)); } –

+0

ich Ihren Code gerade versucht: 'public Action OneSignal (string id) { this.Response.Headers.Add ("Service-Worker-erlaubt", "/"); Rückgabedatei ("~/Scripts/Benutzerdefiniert/oneSignal /" + id, System.Net.Mime.MediaTypeNames.Application.Octet, Pfad.GetFileName ("~/Scripts/Benutzerdefiniert/oneSignal /" + id)); } ' Ich habe eine Datei entsprechend" ~ Scripts/Custom/oneSignal/1234 "und ich rufe die URL" .../OneSignal/1234 "und ich bekomme die Datei (und die Antwort Header ist vorhanden). Können Sie präzisieren, was nicht funktioniert hat? – Arcord

+0

Ja, also musste ich nur den Inhaltstyp definieren und den Inhalt anstelle der Datei zum Download zurückgeben. –