Domanda

Ci scusiamo per praticamente implorando aiuto qui, ma sono stato incaricato di lavorare su quanto sopra e non riesco a trovare le risorse adeguate per aiutarmi. Ecco i dettagli:

  1. L'azienda dispone di software di gestione delle identità che fornisce uno SPML (SOAP) 'mangime' di modifiche al entitities utente

  2. (Se ho questo diritto) il conducente SPML fa una richiesta POST a un URL sul mio server che invia le modifiche

  3. Qualunque cosa si trova sotto tale URL deve quindi elaborare le informazioni pubblicate (XML)

Il punto 3 è la mia parte. Non ho idea di cosa scrivere. Asmx? Aspx? ASHX? Commodore 64 nastri a cassetta? A quanto pare il conducente SPML ha bisogno di una risposta 200 - sarà ottenere che in ogni caso quando il trattamento è in atto no? C'è qualcosa di più ad esso che non sto ricevendo?

Qualsiasi aiuto, puntatori, la guida o consigliare me di dare e ottenere un nuovo hobby, sarebbe molto apprezzato.

Grazie.

Modifica ..............

ho un semplice driver di sapone in corso (per gli scopi di test), che i messaggi XML in una pagina aspx che poi, a sua volta, consuma il POST e salva il codice XML. Grazie a J Benjamin (sotto) e http://www.eggheadcafe.com/articles/20011103.asp per il calcio d'inizio.

SOAP DRIVER (opere di caricamento della pagina)

protected void Page_Load(object sender, EventArgs e)
{    
    XmlDocument doc = new XmlDocument();
    doc.Load(MySite.FileRoot + "testing\\testxml.xml");
    HttpWebRequest req = 
    (HttpWebRequest)WebRequest.Create("http://localhost/mysite/testing/reader.aspx");
    req.ContentType = "text/xml; charset=\"utf-8\"";
    req.Method = "POST";
    req.Headers.Add("SOAPAction", "\"\"");
    Stream stm = req.GetRequestStream();
    doc.Save(stm);
    stm.Close();
    WebResponse resp = req.GetResponse();
    stm = resp.GetResponseStream();
    StreamReader r = new StreamReader(stm);
    Response.Write(r.ReadToEnd());
}

SOAP READER (legge XML pubblicato quando viene chiamato)

protected void Page_Load(object sender, EventArgs e)
{
    String Folderpath = "c:\\TestSOAP\\";
    if (!Directory.Exists(Folderpath))
    {
        Directory.CreateDirectory(Folderpath);
    }
    Response.ContentType = "text/xml";
    StreamReader reader = new StreamReader(Request.InputStream);
    String xmlData = reader.ReadToEnd();
    String FilePath = Folderpath + DateTime.Now.ToFileTimeUtc() + ".xml";
    File.WriteAllText(FilePath, xmlData);

}

Il passo successivo è quello di provare a utilizzare il servizio SPML (che è un Java-driven di Novell tipo cosa) - se ho problemi, mi post di nuovo qui !!

Grazie a tutti ..:)

È stato utile?

Soluzione

Forse sto equivoco, ma questo suoni simile a come sto gestione di URL nel mio servizio web. Stiamo logica di gestione basato su URL, fare la logica, avvolgetelo in XML e rispondono con l'oggetto XML. Ecco un semplice esempio (per semplice, ho una media dei pochi che non richiede l'autenticazione)

Il codice di seguito semplicemente restituisce un oggetto XML contenente un appSetting. La risposta XML è sotto così (con alcuni valori identificativi rimosso).

        [OperationContract]
    [WebInvoke(Method = "POST", UriTemplate = "External/Application/{ApplicationGUID}/APIHost/")]
    public Response GetAPIHostName(Request request, string ApplicationGUID)
    {
        Response response = new Response();
        try
        {
            APIHost apiHost = new APIHost
                                          {
                                              APIHostname = System.Configuration.ConfigurationManager.AppSettings["PlayerAPIHostname"]
                                          };
            response.ResponseBody.APIHost = apiHost;
            response.ResponseHeader.UMResponseCode = (int) UMResponseCodes.OK;
        }
        catch (GUIDNotFoundException guidEx)
        {
            response.ResponseHeader.UMResponseCode = (int)UMResponseCodes.NotFound;
            response.ResponseHeader.UMResponseCodeDetail = guidEx.Message;
        }
        catch (Exception ex)
        {
            UMMessageManager.SetExceptionDetails(request, response, ex);
            if (request != null)
                Logger.Log(HttpContext.Current, request.ToString(), ex);
            else
                Logger.Log(HttpContext.Current, "No Request!", ex);
        }
        response.ResponseHeader.HTTPResponseCode = HttpContext.Current.Response.StatusCode;
        return response;
    }

/" xmlns: xsd = "http://www.w3.org/2001/XMLSchema" xmlns: xsi = ""> http://www.w3.org/2001/XMLSchema-instance        200     200                  localhost          

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top