Ho un servizio Restent WCF che sto ospitando come servizio di Windows. Voglio aggiungere il supporto per più domini al mio servizio. Tuttavia, posso farlo facilmente quando uso il file global.asax. Ma voglio ospitare il mio servizio come servizio di Windows.Condivisione di risorse Cross Origin per C# WCF Servizio Web restful ospitato come servizio di Windows
Ho creato un progetto che ospita il mio servizio come servizio di Windows. Ora il problema che sto affrontando è, non sono in grado di aggiungere il supporto per il dominio incrociato ora. Ho provato tutte le possibili soluzioni che ho trovato attraverso il file app.config, ma nessuno funziona. Ho provato le soluzioni su questi link:
ho provato a fissare l'intestazione nel codice utilizzando la seguente funzione chiamando in ogni metodo di contratto di servizio.
private static void SetResponseHeader()
{
WebOperationContext.Current.OutgoingResponse.Headers.Add("Access-Control-Allow-Origin", "*");
WebOperationContext.Current.OutgoingResponse.Headers.Add("Cache-Control", "no-cache, no-store");
WebOperationContext.Current.OutgoingResponse.Headers.Add("Access-Control-Request-Methods", "GET, POST, PUT, DELETE, OPTIONS");
WebOperationContext.Current.OutgoingResponse.Headers.Add("Access-Control-Allow-Headers", "Content-Type, Accept");
}
Interfaccia:
namespace ReaderService
{
[ServiceContract]
public interface INFCReader
{
[OperationContract]
[WebInvoke(UriTemplate = "GetLogin", Method = "POST")]
GetLoginResults GetLogin(DisplayRequest dispRequest);
}
Ecco DisplayRequest è una classe.
Si prega di aiutare ragazzi. Fammi sapere se qualcuno vuole dare un'occhiata a qualsiasi altro codice.
Grazie mille.
EDIT :::::::
Grazie mille per la risposta Thomas. Ho creato una classe MessageInspector che implementa IDispactchMessageInspector. Ho il codice seguente nella classe MessageInspector.
public class MessageInspector : IDispatchMessageInspector
{
public object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext)
{
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
{
HttpContext.Current.Response.AddHeader("Cache-Control", "no-cache");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept");
HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000");
HttpContext.Current.Response.End();
}
return null;
}
}
L'errore che sto ottenendo ora è: "Riferimento oggetto non impostato su un'istanza di un oggetto". L'errore è in questa linea di codice sopra
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
Tutto quello che voglio fare è aggiungere il supporto CORS al mio servizio web. Per favore fatemi sapere se lo sto facendo correttamente. O c'è un altro modo per fare lo stesso.
Si noti che le risposte di solo collegamento sono scoraggiate, i riferimenti tendono a diventare obsoleti nel tempo. Si prega di considerare l'aggiunta di una sinossi autonoma qui, mantenendo il collegamento come riferimento. – Ren
Grazie Ren. Pubblicheremo la soluzione reale. :) – Newbee
Questo mi ha davvero aiutato molto! Grazie mille. –