2010-12-28 9 views
3

Ok, ich kann also keine anständigen Windows Azure-Beispiele finden. Ich habe eine einfache Hallo-Welt-Anwendung, die auf this tutorial basiert. Ich möchte eine benutzerdefinierte Ausgabe anstelle von JSON oder XML haben. Also habe ich meine Schnittstelle wie:Windows Azure-Zugriff POST-Daten

[ServiceContract] 
public interface IService 
{ 
    [OperationContract] 
    [WebInvoke(UriTemplate = "session/create", Method = "POST")] 
    string createSession(); 
} 

public class MyService : IService 
{ 
    public string createSession() 
    { 
     // get access to POST data here: user, pass 
     string sessionid = Session.Create(user, pass); 
     return "sessionid=" + sessionid; 
    } 
} 

Für das Leben von mir, ich kann nicht scheinen, um herauszufinden, wie die POST Daten zuzugreifen. Bitte helfen Sie. Vielen Dank!

+0

Welches Protokoll verwendet Ihr Dienst? –

+0

Ich verwende das HTTP-Protokoll 'WebServiceHostFactory' als HostFactory. –

+0

Nur eine Nebenbemerkung, erstellen Sie eine Sitzungs-ID möchten Sie möglicherweise sicherstellen, dass der Pass ein Timestamp-Element hat, so dass Sie jedes Mal eine andere Sitzungs-ID erhalten. Indem Sie den Benutzer mit dem Pass verbinden, wird sichergestellt, dass der Pass für jeden Benutzer unterschiedlich ist (falls Sie den Zeitstempel nicht einfügen wollten). – Russell

Antwort

1

Wenn Sie einen HttpContext haben, gibt es möglicherweise ein Request-Objekt mit den Formulardaten. Ich basiere einen Teil davon aus dem ASP.Net-Tag auf diese Frage, wenn das also falsch ist, dann kann es die Notwendigkeit geben, dies anders zu handhaben, aber es sieht für mich wie ein Web-Service aus.


EDIT: HttpRequest ist die Klasse, die die Eigenschaft Form hat, die sein sollte, wo die Daten POST gespeichert, wenn dies eine HTTP-Anforderung ist. Dies ist ein Teil von System.Web, also sollte es bereit sein, ziemlich einfach verwendet zu werden, soweit ich mich erinnere.


Sample code die Request.Form Eigenschaft zeigt:

int loop1; 
NameValueCollection coll; 

//Load Form variables into NameValueCollection variable. 
coll=Request.Form; 
// Get names of all forms into a string array. 
String[] arr1 = coll.AllKeys; 
for (loop1 = 0; loop1 < arr1.Length; loop1++) 
{ 
    Response.Write("Form: " + arr1[loop1] + "<br>"); 
} 

Dieser vermutet gab es eine Httprequest-Instanz um.


WCF Simplified Part 4: Comparing the Request/Reply and One-Way Patterns Pässe in einem Parameter, so dass Ihre „create“ -Methode in diesem Strings nehmen hätte wäre es erscheinen. Ich bin an die ASP.Net-Welt gewöhnt, in der einige eingebaute Objekte wie Request, Response, Server, Application und Session vorhanden sind.


Ja, wenn man versucht die Methode Signatur zu ändern, da es Möglichkeiten, in den Parametern in diesem letzten Beispiel passieren, die ich verbunden obwohl ich weiß nicht, ob das in Ihrem Fall funktionieren würde oder nicht.

+0

Ich denke, das ist tatsächlich ein WCF-Service von den Blicken davon. Ich habe das WCF-Tag hinzugefügt. – smarx

+0

@smartx, Danke. Das war ein Tippfehler. @JB König, nicht sicher, wie ich Zugang zu HttpContext bekommen würde, ich glaube nicht, dass ich überhaupt ASP.NET benutze. Aber ich bin mir nicht wirklich sicher, ich folgte nur dem Tutorial: http://blogs.msdn.com/b/davidlem/archive/2010/04/26/wcf-rest-and-url-rewriting-with-windows- azure.aspx –

+0

@JB König, bitte zeigen Sie mir Beispielcode im Zusammenhang mit meinem obigen Beispielcode. Sieh dir den Kommentar an, wo es heißt: "Erhalte Zugriff auf POST-Daten hier: user, pass" - Ich habe ein Bounty erstellt, damit es deine Zeit wert ist. –

Verwandte Themen