Мое замешательство, когда
Я изменяю код на стороне клиента от "public
строковый ответ "to" публичная строка
responseAliasName ", значение
responseAliasName равно нулю. Но когда
вернуться к ответу с именем переменной,
значение ответа является правильным (значение
это "привет WCF").
Мое замешательство, я думаю, имя переменной
не должно иметь значения до тех пор, пока
макет такой же от клиента и
серверная сторона. Есть идеи, что не так?
Имя переменной, которое вы используете локально в вашем клиенте, совершенно не имеет значения - сервер ничего не знает об этом. Учитывая ваш фрагмент кода от клиента:
ChannelFactory<IFoo> factory = new ChannelFactory<IFoo>("IFoo");
IFoo f = factory.CreateChannel();
FooResponse response = f.Submit("Hi!");
Это будет работать - без проблем:
FooResponse myResponseVar1 = f.Submit("Hi!");
и так будет:
FooResponse someReallyCleverVariableNameWhateverItMightBe = f.Submit("Hi!");
Но DataContract , конечно, является общим элементом , о котором сервис и клиент должны договориться! Вы не можете локально изменить имена элементов в контракте данных - в конце концов, это то, что действительно описывает, как ваши вызовы будут превращены в сообщение XML, и эти фрагменты должны оставаться синхронизированными между сервером и клиентом чтобы клиент мог превратить полученное от сервера сообщение обратно в объект для использования.
ServiceContract и DataContract должны быть одинаковыми на обоих концах - это основное требование, в противном случае, почти ничего не происходит вообще.
Марк