2012-11-12 5 views
2

J'ai un self-service hébergé qui a besoin d'écouter upload notifications coming from a BITS server (ils sont une simple requête HTTP POST avec les en-têtes personnalisés). Si je n'étais pas auto hébergement mon service et utilisait IIS je voudrais juste faire une page ASPX et je pouvais gérer les demandes entrantes, mais je suis en utilisant'autonome WCF et je ne peux pas passer à IIS.Consommez HTTP POST à ​​partir d'un self service hébergé

Je me suis penché sur l'utilisation de WebInvokeAttribute, cependant cela ne semble être que pour l'envoi de JSON ou XML comme réponse et je dois suivre les spécifications du protocole. Aussi, je n'ai pas vu un moyen de sortir les en-têtes personnalisés. La prochaine chose que j'ai regardée était HttpListener et il semble faire ce que j'ai besoin, mais je n'ai pas vu s'il y avait un moyen de le configurer via mon fichier app.config comme les points de terminaison WCF normales. Dois-je simplement ajouter l'adresse à ma section applicationSettings ou y a-t-il un meilleur moyen de réaliser ce que j'essaie de faire?

Répondre

2

je fini juste en utilisant la classe et de stocker l'URL là-bas Propriétés.

//This is run on it's own thread 
HttpListener listener = new HttpListener(); 
listener.Prefixes.Add(Properties.Settings.Default.BitsReplierAddress); 
listener.Start(); 

while (_running) 
{ 
    // Note: The GetContext method blocks while waiting for a request. 
    // Could be done with BeginGetContext but I was having trouble 
    // cleanly shutting down 
    HttpListenerContext context = listener.GetContext(); 
    HttpListenerRequest request = context.Request; 

    var requestUrl = request.Headers["BITS-Original-Request-URL"]; 
    var requestDatafileName = request.Headers["BITS-Request-DataFile-Name"]; 

    //(Snip...) Deal with the file that was uploaded 
} 

listener.Stop(); 
+0

Si vous souhaitez utiliser des méthodes asynchrones pour appeler ce [je résolu mon problème au sujet de l'arrêt proprement] (http://stackoverflow.com/a/13352359/80274) –

Questions connexes