8

Ich habe Folgendes in der web.config, aber nachdem es auf IIS 7.5 auf dem Server veröffentlicht wurde, konnten sie unter IIS -> HTTP Response Headers nicht gefunden werden.Wie Sie benutzerdefinierte Header mit web.config festlegen?

Was ich gefunden habe, ist, dass die web.config auf Server diese Einträge auch nicht, aber sie waren dort vor der Veröffentlichung. Ich kann also nur sagen, dass sie durch den Veröffentlichungsprozess entfernt wurden, aber es gibt nichts in den web.config Transformationsdateien, die sie entfernen. Warum sind sie aus der veröffentlichten `web.config 'verschwunden?

<system.webServer> 
    <httpProtocol> 
     <customHeaders> 
     <add name="Access-Control-Allow-Origin" value="*" /> 
     <add name="Access-Control-Allow-Headers" value="Content-Type" /> 
     <add name="Access-Control-Allow-Methods" value="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" /> 
     </customHeaders> 
    </httpProtocol> 
</system.webServer> 
+1

Haben Sie verschiedene Konfigurationen für Debug und Veröffentlichung haben? –

+0

Stimmen Sie mit Jason überein, überprüfen Sie Ihre web.config-Transformationen. – Nick

Antwort

0

Sind Sie sicher, dass die web.config der beste Ort dafür ist? Ich bevorzuge Custom ActionFilter's. Dies bietet Ihnen die Möglichkeit auszuwählen, wann (auf welchen Methoden) die Logik auftreten soll, und bietet auch viel mehr Kontrolle (speziell die Ausnahmebehandlung, was in den verschiedenen Phasen des Aktionslebenszyklus zu tun ist). Microsoft empfiehlt, diesen Ansatz für Aufrufe vor der Ausführung der Aktion zu verwenden.

dieses asp.net Artikel: http://www.asp.net/mvc/overview/older-versions/hands-on-labs/aspnet-mvc-4-custom-action-filters

Einige Beispiel-Code:

public class CustomFilterAttribute : ActionFilterAttribute 
    { 
     public override void OnActionExecuting(ActionExecutingContext filterContext) 
     { 
      //add in your custom headers 
      filterContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "*"); 
      filterContext.HttpContext.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type"); 
      filterContext.HttpContext.Response.AddHeader("Access-Control-Allow-Methods", "GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS"); 

      base.OnActionExecuting(filterContext); 
     } 

     public void OnException(ExceptionContext filterContext) 
     { 
      //do some cool exception handling here 
     } 
    }