* Result и * ResultSpecified параметры в службе WCF? - PullRequest
3 голосов
/ 23 марта 2011

В моей службе WCF есть функция, например:

bool ValidateLogin(string user, string password)

после того, как я разместил ее в Windows Azure и добавил ссылки в мое веб-приложение, эта функция стала:

bool ValidateLogin(string user, string password, out int ValidateLoginResult, out bool ValidateLoginResultSpecified)

Кто-нибудь знает, что это за два параметра?И как я могу предотвратить его добавление после хостинга?

Ответы [ 6 ]

6 голосов
/ 04 июля 2014

Установка стиля XmlSerializerFormat в RPC сделала свое дело для меня. То есть

[OperationContract, XmlSerializerFormat(Style = OperationFormatStyle.Rpc)]
bool ValidateLogin(string user, string password)

Изменяет способ генерации wsdl:

<wsdl:message name="IService_ValidateLogin_InputMessage">
    <wsdl:part name="parameters" element="tns:ValidateLogin" />
</wsdl:message>
<wsdl:message name="IService_ValidateLogin_OutputMessage">
    <wsdl:part name="parameters" element="tns:ValidateLoginResponse" />
</wsdl:message>

Кому:

<wsdl:message name="IService_ValidateLogin_InputMessage">
    <wsdl:part name="user" type="xsd:string" />
    <wsdl:part name="password" type="xsd:string" />
</wsdl:message>
<wsdl:message name="IService_ValidateLogin_OutputMessage">
    <wsdl:part name="ValidateLoginResult" type="xsd:boolean" />
</wsdl:message>

Эта статья предлагает другое решение, но также содержит некоторые дополнительные объяснения: http://www.codeproject.com/Articles/323097/WCF-ASMX-Interoperability-Removing-the-Annoying-xx

4 голосов
/ 24 марта 2011

По-видимому, это происходит из генератора WSDL, в данном случае используемого для опции «Добавить веб-ссылку ...» в VS 2005:

http://devpinoy.org/blogs/cruizer/archive/2008/10/05/some-wcf-gotchas.aspx

Ответ на форумах MSDN также намекает на устаревшую поддержку:

http://social.msdn.microsoft.com/Forums/en/windowsazure/thread/406a6b6b-9dab-469d-ad0f-1f8f95cf0656

Итак, мой ответ, я предполагаю, что ваш клиент .NET 2?

1 голос
/ 16 февраля 2016

работал нормально для меня, как показано ниже:

[ServiceContract]
[XmlSerializerFormat]
public interface IService1
{
   // do code here
}
1 голос
/ 29 июня 2012

Добавьте или замените следующий код над интерфейсом IService:

[ServiceContract ( Namespace="http://www.yoursite.com/"),XmlSerializerFormat]

Источник

1 голос
/ 23 марта 2011

Как вы добавляете WCF в свое клиентское приложение? Похоже, это не имеет ничего общего с Azure - это больше связано с тем, как вы определили свой [DataContract] и как он импортируется в ваш клиентский код.

Я думаю, что если вы используете WCF на стороне клиента, вы не увидите эти дополнительные параметры.

См. Возможное объяснение (или, возможно, связанную проблему) здесь - http://blogs.msdn.com/b/eugeneos/archive/2007/02/05/solving-the-disappearing-data-issue-when-using-add-web-reference-or-wsdl-exe-with-wcf-services.aspx

0 голосов
/ 29 мая 2012

В вашем клиентском проекте убедитесь, что вы выбрали «Добавить ссылку на службу» вместо «Добавить веб-ссылку». «Добавить ссылку на службу» использует WCF, а «Добавить веб-ссылку» - нет и компенсирует необязательные параметры, добавляя дополнительные параметры «[указанное имя_параметра]».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...