Служба selfhost wcf: как передавать переменные потока

У меня проблема с передачей переменной типа потока в автономную службу отдыха.

Вот мой код в клиентском приложении

static void Main(string[] args)
        {
            ChannelFactory<IService> cf = new ChannelFactory<IService>(new WebHttpBinding(), "http://localhost:8000");
            cf.Endpoint.Behaviors.Add(new WebHttpBehavior());
            IService channel = cf.CreateChannel();
            string strQuery = "<?xml version=\"1.0\"?><wql host='192.168.1.115' username='domain\\sebastian' password='password' Type='powershell'><query id='0.' ns='root\\cimv2' devicetype='powershell'><![CDATA[select CSName from Win32_OperatingSystem]]></query></wql>";
            byte[] byteArray = Encoding.UTF8.GetBytes(strQuery);
            MemoryStream stream = new MemoryStream(byteArray);
            XmlDocument ResultSet = new XmlDocument();
            ResultSet = channel.postGeneralXMLDocument(stream);
            Console.Read();
        }

Это в конечном итоге вызывает метод «postGeneralXMLDocument» в собственной службе.

Здесь "Stream strInput" не несет ожидаемого содержимого.

[XmlSerializerFormat]
    public XmlDocument postGeneralXMLDocument(Stream strInput)
    {
        try
        {
            StreamReader sr = new StreamReader(strInput);
            String strRequest = sr.ReadToEnd();
            sr.Dispose();
            NameValueCollection qs = HttpUtility.ParseQueryString(strRequest);
            strQuery = qs["strQuery"];
        //Do something
        }
         catch (Exception Ex)
        {

        }
    }

А интерфейс такой..

    [ServiceContract]
public interface IService
    {
        [XmlSerializerFormat]
        [OperationContract]
        [WebInvoke]
        XmlDocument postGeneralXMLDocument(Stream strInput);

    }
}

Я имел в виду следующий URL-адрес для создания этого

собственный хост wcf rest service

Если бы кто-то мог помочь мне решить это, это было бы здорово

Спасибо и с уважением Себастьян


person Sebastian Xavier    schedule 03.06.2014    source источник
comment
Что вы подразумеваете под «Stream strInput не несет ожидаемого контента»? выдает исключение? он возвращает пустой документ?   -  person Elias Platek    schedule 06.06.2014
comment
Кстати, в вашем основном методе много плохих практик, проверьте здесь => msdn. microsoft.com/en-us//library/yh598w02.aspx   -  person Elias Platek    schedule 06.06.2014
comment
Проблема была с моим кодом. Я решил это. Приносим извинения за неудобства. Спасибо за информацию.   -  person Sebastian Xavier    schedule 06.06.2014


Ответы (1)


Возможно вы не правильно настроили wcf. WCF имеет 4 типа передачи, и по умолчанию он не подходит для потоковой передачи.

Пожалуйста, проверьте ссылки выше для получения дополнительной информации. Вы должны быть в состоянии заставить ваш проект работать после прочтения.

http://net-daylight.blogspot.com/2011/12/streaming-in-wcf.html http://bartwullems.blogspot.com/2011/01/streaming-files-over-wcf.html

person PrzemekG    schedule 05.06.2014
comment
Проблема была с моим кодом. Я решил это. Приносим извинения за неудобства. - person Sebastian Xavier; 06.06.2014