WCF - вызов запроса WebGet из другой службы

Есть веб-сервис, в который я интегрируюсь. Служба запрашивает параметр URL для перенаправления после того, как она делает свое дело.

Я создал запрос WebGet, как:myserviceUrl/redirect/someVal/someOtherValи дал URL-адрес запроса в качестве параметра.

Теперь, когда я ввожу URL-адрес в браузер (запущенный из VS как localhost), я могу подтвердить, что он работает так, как я планировал. Но когда адрес, который я даю в качестве параметра, вызывается из веб-службы, браузер показывает страницу, которая говорит

Сервис - метод не разрешен.

Если я нажимаю на адресную строку и нажимаю ввод (с URL, который кажется правильным), это работает.

Что может быть источником этой проблемы, домен, аутентификация? Как я могу обойти это. Есть ли web.config настройки, которые я могу изменить, или какой-либо атрибут запроса, с которым я должен возиться?

Я немного искал в Интернете, но не могу найти решение, которое работает.

Изменить: (на основе комментария Ошварца)

Это библиотека DLL, которую я вызываю из службы инициализации для тестирования.

public static void AppInitialize()
{
    ServicePostContent con = new ServicePostContent()
    {
        param1 = "val",
        param2 = "val2",
        responseUrl = "myserviceUrl/redirect/someVal/someOtherVal"
    }
    PostResponse res = Service.PostData(con);
}

IService1.cs:

[WebGet (UriTemplate = "redirect/{someVal}/{someOtherVal}")]
[OperationContract] void Test(string someVal, string someOtherVal);

Service1.svc:

public void Test(string someVal, string someOtherVal)
{
     System.Diagnostics.Debug.WriteLine(someVal + " / " + someOtherVal);
}

1 ответ

Решение

Судя по вашей ошибке, метод, который вы называете службой отдыха, вам не подходит. Ваш сервис WebGet, и из вашего кода ServicePostContent кажется, что вы используете метод post для вызова остального сервиса.

Доза ли ваш ServicePostContent использует метод get для вызова остальной службы?

Или вы можете изменить свой Webget на WebInvoke и установить для свойства Method значение POST

 [WebInvoke(UriTemplate = "redirect/{someVal}/{someOtherVal}", Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)]
    [OperationContract] void Test(string someVal, string someOtherVal);
Другие вопросы по тегам