WCF - вызов запроса WebGet из другой службы - PullRequest
0 голосов
/ 18 января 2019

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

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

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

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

Если я нажму на адресную строку и нажму Enter (с 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 Ответ

0 голосов
/ 21 января 2019

Судя по вашей ошибке, метод, который вы называете службой отдыха, вам не подходит. Ваш сервис 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);
...