J'essaie de créer un service Web qui manipule les requêtes HTTP POST et GET.Déploiement d'un service Web HttpHandler
Voici un exemple:
public class CodebookHttpHandler: IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
if (context.Request.HttpMethod == "POST")
{
//DoHttpPostLogic();
}
else if (context.Request.HttpMethod == "GET")
{
//DoHttpGetLogic();
}
}
...
public void DoHttpPostLogic()
{
...
}
public void DoHttpGetLogic()
{
...
}
je dois déployer cela, mais je me bats comment commencer. La plupart des références en ligne montrent la fabrication d'un site Web, mais vraiment, tout ce que je veux faire est de répondre quand un HttpPost est envoyé. Je ne sais pas quoi mettre sur le site, je veux juste que ce code fonctionne.
Edit: Je suivais le site this comme exactement ce que je suis en train de faire.
J'ai le site Web mis en place, j'ai le code pour le gestionnaire dans un fichier .cs, j'ai édité le web.config pour ajouter le gestionnaire pour l'extension de fichier dont j'ai besoin. Maintenant, je suis à l'étape 3 où vous dites IIS à propos de cette extension et le mapper à ASP.NET. Aussi j'utilise IIS 7 donc l'interface est légèrement différente des captures d'écran. Ceci est le problème que j'ai:
1) Go to website
2) Go to handler mappings
3) Go Add Script Map
4) request path - put the extension I want to handle
5) Executable- it seems i am told to set aspnet_isapi.dll here. Maybe this is incorrect?
6) Give name
7) Hit OK button:
Ajouter un script Carte
Est-ce que vous souhaitez autoriser cette extension ISAPI? Cliquez sur "Oui" pour ajouter l'extension avec une entrée "Autorisée" à la liste des restrictions ISAPI et CGI ou pour mettre à jour une entrée d'extension existante à "Autorisé" dans la liste des restrictions ISAPI et CGI.
Oui Non Annuler
8) Hit Yes
Ajouter un script Carte
Le module spécifié requis par ce gestionnaire n'est pas dans la liste des modules. Si vous ajoutez un mappage de gestionnaire de mappage de script, le module IsapiModule ou CgiModule doit figurer dans la liste des modules.
OK
modifier 2: Je viens juste compris que ce gestionnaire géré avait quelque chose à voir avec les gestionnaires Witten en code managé, carte de script était d'aider la configuration d'un exécutable et la cartographie module travailler avec des modules http. Donc, je devrais utiliser l'option 1 - Ajouter un gestionnaire géré.
Voir:
http://img37.imageshack.us/img37/8350/managedhandler.png
http://yfrog.com/11managedhandlerp
Je sais ce que mon chemin de requête est pour l'extension de fichier ... et je sais que le nom (peut appeler ce que je veux), donc il faut être le champ Type avec lequel je me bats. Dans le dossier des applications (dans IIS) jusqu'ici j'ai juste le MyHandler.cs et web.config (Bien sûr aussi un fichier avec l'extension que j'essaye de créer le gestionnaire pour!)
EDIT3: progrès
Alors maintenant, j'ai le code et le web.config mis en place, je test pour voir si je peux accéder au fichier de filename.CustomExtension:
Erreur HTTP 404.3 - Non trouvé La page que vous demandez ne peut pas être diffusée en raison de la configuration de l'extension. Si la page est un script, ajoutez un gestionnaire . Si le fichier doit être téléchargé, ajoutez une carte MIME.
Donc IIS7 je vais à Mappages et l'ajouter à See this MSDN example, it is exactly what I am trying to follow
La classe ressemble à ceci:.
using System.Web;
namespace HandlerAttempt2
{
public class MyHandler : IHttpHandler
{
public MyHandler()
{
//TODO: Add constructor logic here
}
public void ProcessRequest(HttpContext context)
{
var objResponse = context.Response;
objResponse.Write("<html><body><h1>It just worked");
objResponse.Write("</body></html>");
}
public bool IsReusable
{
get
{
return true;
}
}
}
}
ajouter le gestionnaire de la façon suivante:
Demande chemin: *.whatever
Type: MyHandler
(nom de la classe - cela semble correct selon l'exemple!) Nom: whatever
Essayez de parcourir le nouveau fichier personnalisé (ce qui est dans la piscine d'application comme intégrée):
Erreur HTTP 500,21 - Erreur interne du serveur gestionnaire « whatever » a un mauvais module « ManagedPipelineHandler » dans sa liste des modules
Essayez de parcourir le nouveau fichier personnalisé (ce qui est dans la piscine app comme CLASSIC):
erreur HTTP 404.17 - Not Found le contenu demandé semble être le script et ne sera pas servi par le gestionnaire de fichiers statique.
Questions directes
1) Est-ce que le site doit être en mode classique ou intégré? Je ne trouve aucune référence de ceci dans le matériel en ligne, que ce soit ou non.
2) Dois-je compiler MyHandler.cs en .dll, ou puis-je simplement le laisser en .cs? A-t-il besoin d'être dans un dossier bin, ou juste n'importe où dans la racine?
Quelle version de .NET utilisez-vous? –
@John Saunders 3.5 SP1 Je suis assez sûr ... pourquoi est-ce important? – baron
vous ne savez jamais. –