2015-04-23 8 views
0

Я немного смущен о том, как это сделать. Я последовали за некоторыми примерами после поиска, но все же не могу получить эту работу, тогда снова большинство примеров, похоже, нацелены на Json (не уверен, что это изменит ситуацию).Передача параметров запроса службе WCF

Im использование основнойHttpBinding.

Так у меня есть простой интерфейс:

<ServiceContract()> 
Public Interface ICustomersService 
<OperationContract()> 
<WebGet(UriTemplate:="SaveName/{name}")> 
Sub SaveName(ByVal name as string) 

Далее я создаю мой хостинг-приложение, которое работает и я могу достигнуть страницы WSDL и просматривать SAVENAME.

Текущий URL является http://example.com/

Я хотел бы передать имя, которое затем сохраняет в базе данных. Im ожидая URL быть вдоль линий

http://example.com/SaveName?name="Tony" 

Это не работает, так что я попробовал несколько вариаций с использованием стандартных параметров строки запроса, но не работать.

Я делаю что-то неправильно или нет шага?

+0

Вы включили тег C#, но это, похоже, не имеет ничего общего с C#. –

+0

Проблема может относиться к пользователю C# - эта проблема не будет соответствовать конкретному языку для языка, но может привлечь те, которые могут быть решены в прошлом, и не обязательно просматривать тег WCF. – Computer

ответ

1

Чтобы использовать атрибуты WebGet/WebInvoke, вы не можете использовать basicHttpBinding (или вы можете использовать его, но эти атрибуты будут игнорироваться). BasicHttpBinding является одним из привязок, использующих протокол SOAP, и имеет некоторые сильные требования к формату сообщения (в двух словах, почти все идет в тело запроса, а некоторые параметры адресации могут поступать в заголовки HTTP).

Чтобы иметь возможность определять конечную точки операции с использованием атрибута WebGet, ваша конечная точка должна использовать webHttpBinding, и он также должен иметь <webHttp/> поведения, примененное к нему (WebHttpBehavior, если вы определяете вашу конечную точку с помощью кода) ,

Еще одна вещь, заслуживающая внимания: если вы используете «веб-конечную точку», WSDL не будет иметь всю информацию, необходимую для подключения к ней клиента, поэтому вы не сможете использовать «WCF» тестовый клиент ", чтобы поговорить с ним. Подробная информация о нем находится по адресу this blog post.

+0

Хорошо, я прочитаю эту ссылку, но если я иду по пути прохождения параметров с помощью webHttpBinding, мой URL по-прежнему будет http://example.com/mymethod?name= "tony", moreParamters = "" ... который затем вставляет данные в мою базу данных - так что в основном URL-адрес будет сохранять все, что ему передается? – Computer

+0

Базовый URL-адрес, в котором размещается ваша служба, так что да, он все еще может работать. – carlosfigueira

Смежные вопросы