SPML (servicio de aprovisionamiento de lenguaje de marcas) / C # .Net ayuda por favor!

StackOverflow https://stackoverflow.com/questions/4089048

  •  28-09-2019
  •  | 
  •  

Pregunta

Lo siento por prácticamente pidiendo ayuda aquí, pero he recibido el encargo de trabajar en lo anterior y no puedo encontrar ningún recursos suficientes para que me ayude. Aquí están los detalles:

  1. La empresa cuenta con software de gestión de identidad que proporciona un 'feed' de los cambios en entitities usuario SPML (SOAP)

  2. (Si he entendido bien) el conductor SPML realiza una solicitud POST a una URL en mi servidor que envía los cambios

  3. Lo que se sienta debajo de esa URL a continuación, tiene que procesar la información publicada (XML)

El punto 3 es mi granito de arena. No tengo idea de qué escribir. Asmx? Aspx? Ashx? Commodore 64 cintas de cassette? Al parecer, el conductor SPML necesita una respuesta 200 - conseguirá que de todos modos cuando el tratamiento ha de tomar el lugar que no? ¿Hay algo más a él que yo no estoy?

Cualquier ayuda, punteros, orientación o asesoramiento que renuncie y conseguir un nuevo pasatiempo, sería muy apreciada.

Gracias.

EDITAR ..............

tenemos un controlador simple jabón ir (para los propósitos de la prueba), que xml mensajes a una página aspx que luego, a su vez, consume el POST y guarda el código XML. Gracias a J Benjamin (abajo) y http://www.eggheadcafe.com/articles/20011103.asp para el buen inicio.

CONTROLADOR DE JABÓN (trabajos sobre carga de la página)

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());
}

de SOAP lector (lee xml registró cuando llama)

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);

}

El siguiente paso es tratar de consumir el servicio SPML (que es una impulsada en Java Novell tipo de cosa) - si tengo algún problema, voy a publicar de nuevo aquí !!

Gracias a todos ..:)

¿Fue útil?

Solución

Tal vez estoy malentendido, pero esto suena similar a la forma en que estoy URL manejo en mi servicio web. Estamos lógica basada en URL manipulación, hacer la lógica, lo envuelve en XML y responden al objeto XML. Aquí hay un ejemplo simple (por simple, que una media de los pocos que no requiere autenticación)

El código de abajo simplemente devuelve un objeto XML que contiene un AppSetting. La respuesta XML es a continuación, así (con algunos valores que identifican eliminados).

        [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          

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top