WCF будет только когда-либо передавать данные - вы не можете раскрыть «метод» через WCF.
WCF - это система сериализованных сообщений - между клиентом и сервером передаются только сериализованные данные - нет другого соединения (без «удаленного объекта» или чего-то подобного)
Но и string
, и int
должны обрабатываться без проблем ....
Может быть, вы спотыкаетесь об этом поведении ?? Я тоже не совсем понимаю, где ваша проблема - что вы ожидаете, и что вы видите вместо этого ?? Что на самом деле делает ваш сервисный метод в своей реализации ??
Обновление: когда я делаю то же самое, что и вы, а затем использую Отслеживание WCF , чтобы увидеть, что происходит, это запрос, поступающий в службу:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<To s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://localhost:8433/Services/GetStuff</To>
<Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://tempuri.org/IGetStuffService/GetStuff</Action>
</s:Header>
<s:Body>
<GetStuff xmlns="http://tempuri.org/">
<data xmlns:a="http://schemas.datacontract.org/2004/07/wcf_test"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<a:P_Integer>5</a:P_Integer>
<a:P_String>Where to go for holidays...</a:P_String>
</data>
</GetStuff>
</s:Body>
</s:Envelope>
Так что же вы не видите, что должно быть там? ..... Я ясно вижу и целое, и строковое значение в этом сообщении SOAP - как и ожидалось.
Может быть, вы не видите значение 1
, потому что оно где-то спрятано в потоке байтов ?? Попробуйте указать другое значение, например 4711067
или что-то еще, - оно не потеряется в вашем сообщении ....
Чтобы включить трассировку WCF, поместите эти два раздела в web.config
или app.config
службы WCF:
<system.diagnostics>
<sources>
<source name="UserTraceSource" switchValue="Warning, ActivityTracing" >
<listeners>
<add name="xml"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="C:\logs\UserTraces.svclog" />
</listeners>
</source>
</sources>
<trace autoflush="true" />
</system.diagnostics>
(убедитесь, что каталог C:\logs
существует до этого!) И
<system.serviceModel>
<diagnostics>
<messageLogging maxMessagesToLog="30000"
logEntireMessage="true" logMalformedMessages="true"
logMessagesAtServiceLevel="false"
logMessagesAtTransportLevel="true">
<filters>
<clear/>
</filters>
</messageLogging>
</diagnostics>
</system.serviceModel>
Теперь вы получите *.svclog
файлов в C:\logs
- откройте проводник Windows, дважды щелкните по ним, и вы должны быть взяты в WCF Trace Viewer для анализа.