2015-04-14 2 views
0

Привилегированные извинения за этот вопрос, поскольку я знаю, что это должно быть очень просто, но я совершенно новый для ServiceStack и не нашел совершенно то, что искал, просматривая ServiceStack wiki. Как правило, мой вопрос: как мне получить доступ к службе ServiceStack через сеть?Как мне получить доступ к службе ServiceStack через сеть?

После некоторых учебников, я создал консольное приложение, которое создает новый клиент ServiceStack, используя следующий синтаксис:

var client = new ServiceStack.JsonServiceClient("http://localhost:51721"); 
var response = client.Post<FlightResponse>("/flights",new FlightRequest{ tfsUriString="http://10.0.1.8:8080/tfs/"}); 

Я смог создать и получить DTO и это все хорошо и хорошо, но теперь Я хочу запустить консольное приложение на другом компьютере и запустить службу на другом компьютере. Я попробовал всплывать в URI компьютера, на котором размещена служба, но я получаю запрос WebServiceException - Bad, когда я это делаю.

Я подумал, может быть, если бы я играл с настройками Web.Config и модифицировал конфигурацию system.webServer, я мог бы заставить его работать, но я все же просто получаю WebServiceExceptions, когда я это делаю.

Может ли кто-нибудь пролить свет на это? Как использовать службу, размещенную на другом компьютере? MSDN Creating Cross Platform Applications был полезным, но он по-прежнему использует один и тот же подход к локальному хосту. Возможно ли подключиться к сервису, запущенному на другом компьютере хоста? (Обязательно? ....)

Редактировать: Добавлена ​​ссылка на мой код на github, если это помогает! Еще раз спасибо Service Stack Example

+0

Не видя кода сервера, вы также должны убедиться, что этот запрос не блокируется брандмауэром на любом клиенте или сервере. – jklemmack

+0

Пошел вперед и добавил ссылку на мой github, если у вас есть время для его просмотра. Я знаю, что буду очень благодарен, я проверил свои брандмауэры, включил их и выключил, и пока не повезло. Спасибо за ответ! – UvrD

ответ

0

Вы будете обращаться к службам ServiceStack одинаково, хотя это необычно, что вам также нужно будет добавить маршрут для сервисов ServiceStack, поскольку он автоматически использует маршрут, определенный в Request DTO, также лучше объявить тип ответа на запрос DTO, а поэтому он не должен быть на каждом месте вызова, так что он должен что-то вроде:

[Route("/flights")] 
public class GetFlights : IReturn<FlightResponse> 
{ 
    public string tfsUriString { get; set; } 
} 

var client = new JsonServiceClient("http://localhost:51721"); 
var response = client.Post(new GetFlights { 
    tfsUriString = "http://10.0.1.8:8080/tfs/" 
}); 

Если вы получаете Bad Request, это, как правило, из-за отправки некорректный запрос, например Ошибка проверки. В этих случаях взглянуть на сообщениях об ошибках, которые находятся на WebServiceException, то есть вы можете распечатать ошибочный ответ с:

webEx.ResponseStatus.PrintDump(); 

имея Также см на необработанном HTTP Request и Response Headers также предоставит много проницательности о том, что не так с запросом.

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