Pregunta

Necesito aceptar datos de formulario para un servicio basado en WCF. Aquí está la interfaz:

[OperationContract]
[WebInvoke(UriTemplate = "lead/inff",
    BodyStyle = WebMessageBodyStyle.WrappedRequest)]
int Inff(Stream input); 

Aquí está la implementación (muestra: sin manejo de errores y otras medidas de seguridad):

public int Inff(Stream input)
{

    StreamReader sr = new StreamReader(input);
    string s = sr.ReadToEnd();
    sr.Dispose();

    NameValueCollection qs = HttpUtility.ParseQueryString(s);
    Debug.WriteLine(qs["field1"]);
    Debug.WriteLine(qs["field2"]);

    return 0;
}

Suponiendo WCF, ¿hay una mejor manera de lograr esto además de analizar el flujo entrante?

¿Fue útil?

Solución

Recuerdo hablarte sobre esto en DevLink.

Dado que debe admitir campos de formulario, la mecánica de obtenerlos (lo que está haciendo actualmente) no cambia.

Algo que podría ser útil, especialmente si desea reutilizar su servicio para nuevas aplicaciones que no requieren los campos de formulario, es crear un canal que deconstruya su flujo y lo vuelva a empaquetar en XML / JSON / SOAP / Whatever y tenga sus clientes de formulario se comunican con el servicio a través de eso, mientras que los clientes que no usan formularios pueden usar otra pila de canales. Solo una idea ...

Espero que ayude. Si necesita ayuda con el canal, no dude en hacérmelo saber.

Otros consejos

Puede serializar los campos de su formulario con jquery y empaquetarlo como solicitud json al servicio wcf.

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