2011-01-05 5 views
0

Ich möchte einen einfachen Webdienst erstellen, um an ASP.Net-Entwickler zu verteilen. Ich habe eine Anwendung (SvnBridge) gefunden, die das Layout hat, nach dem ich bin - eine einzelne web.config Datei und eine einzelne .dll Datei.Erstellen Sie einen kompakten, nicht SOAP-Webdienst in ASP.Net

Der interessante Teil ist in der web.config Datei:

<httpHandlers> 
    <clear/> 
    <add verb="*" path="*" type="SvnBridgeServer.SvnBridgeHttpHandler, SvnBridgeServer" /> 
</httpHandlers> 

Ooooo, die perfekt aussieht. Ich kann alles, was ich mag, auf diese Art und Weise werfen, und ich werde davon ausgehen, dass es sich um eine IHttpHandler Implementierung handelt.

So riss ich den Geist der zuvor verlinkten Konfigurationsdatei, gebündelt meine Bibliothek in eine DLL und schlug Build in VS. Ich bekomme sofort das in IE:

Ich arbeite hauptsächlich mit PHP - ASP.Net ist ziemlich neu für mich. Natürlich mache ich etwas falsch, aber ich habe keine Ahnung, wo ich überhaupt anfangen soll.

Im Moment benutze ich ein Python-Skript alle C# Quelle in einer einzigen .ashx Datei zu bündeln, die für die Verteilung irgendwie cool ist, aber ein Alptraum macht das Debuggen. Es sieht ein bisschen wie folgt:

<%@ WebHandler Language="C#" Class="MyApp.MyClass" debug="true" %> 
using System.Data; 
... 
namespace MyApp 
{ 
    public class MyClass : IHttpHandler 
    { 
     public void ProcessRequest(HttpContext Http) 
     { 
      ... 
     } 
    } 
} 

Es gibt natürlich viel mehr zu bieten (user config-Bereich usw.), aber man den Kern erhalten.

Kann mir jemand in die richtige Richtung zeigen? Ich bin mit der C# -Sprache vertraut, nur die Anordnung und Konfiguration haben mich ein wenig ratlos gemacht.

Ich weiß, dass diese Frage etwas mehrdeutig erscheint - bitte posten Sie Kommentare und ich werde versuchen, wo nötig zu klären.

Danke,

Neil.

+0

Wie genau planen Sie diesen Webservice zu hosten? Ist es ein SOAP-Service, ein REST-Service oder ein benutzerdefinierter HTTP-Handler? – Doobi

+0

@Doobi die App wird an meine Kunden verteilt, und sie werden es hosten wie sie wollen - von Shared Hosting zu dedizierten Servern. Es ist ein benutzerdefinierter HTTP-Handler, ein effektiv gekapseltes REST, das immer an einen einzelnen Endpunkt gesendet wird. –

+0

Die Fehlermeldung, die Sie angegeben haben: Ist das alles, was Sie sehen? Nichts anderes wird angezeigt? – volpav

Antwort

1

Dieser fixiert ist. Ich musste den Ordner in eine Anwendung in IIS umwandeln und die Quelle zu einem vertrauenswürdigen (Nicht-Netzwerk-) Speicherort verschieben.

Meine Dankbarkeit für diejenigen, die sich die Zeit genommen haben, diese Frage zu überprüfen.

1

Was sagt der EventLog? Es sollte wahrscheinlich einen Datensatz geben (vom Typ "Warnung" mit der Quelle, die wie "ASP.NET x.x.xxxxx.x" aussieht).

Wie auch immer, Sie haben am Anfang Ihres Beitrags erwähnt, dass Sie eine einzige DLL-Datei (unter anderem mit der web.config) haben möchten, die verteilt werden soll. Später zeigen Sie auf die Datei .ashx.

Ich würde lieber eine einzelne Klasse (.cs-Datei in Ihrem Projekt) erstellen und die Implementierung meines HTTP-Handlers in diese Klasse einfügen.

Auch, überprüfen Sie, dass die Art des HTTP-Handler korrekt in einer web.config angegeben:

<add verb="*" path="*" type="[namespace].[type], [assembly]" /> 

Wenn Sie IIS6 verwenden, dann müssen Sie manuell eine Wildcard Skriptzuordnung hinzufügen, um damit Ihr HTTP-Handler die Anfragen "abfängt". This Forumsbeitrag könnte helfen.

- Pavel

+0

Danke Pavel. Um zu verdeutlichen, ist eine '.ashx'-Datei das, was ich gerade habe. Es ist mir egal, ob es so bleibt. Letztendlich benötige ich eine kleine Anzahl von Dateien, die ohne zusätzliche Konfiguration auf das Shared Hosting übertragen werden können (zB Registrierung von DLLs in IIS usw.). Und ja, das 'type' Attribut ist korrekt :) –

Verwandte Themen