对这个问题先发制人的道歉,因为我知道这应该是非常容易的,但我是ServiceStack的新手,并没有找到我正在寻找的ServiceStack wiki。一般来说,我的问题是:如何通过网络访问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 Request。
我想也许如果我玩我的Web.Config设置并修改了system.webServer配置我可以让它工作但我仍然只是在我这样做时获得WebServiceExceptions。
任何人都可以对此有所了解吗?如何使用另一台计算机上托管的服务? MSDN Creating Cross Platform Applications是一个有用的读物,但它仍然使用相同的localhost方法。甚至可以连接到在另一台主机上运行的服务吗?(当然?....)
编辑:如果有帮助的话,在github上添加了我的代码链接!再次感谢Service Stack Example
答案 0 :(得分:0)
您将以相同的方式访问ServiceStack服务,尽管您还需要为ServiceStack服务添加路由,因为它会自动使用Request DTO上定义的Route,但最好在Request 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/"
});
如果您收到错误请求,通常是由于发送格式错误的请求,例如验证错误。在这些情况下,请查看WebServiceException
上的错误消息,即您可以使用以下命令打印错误响应:
webEx.ResponseStatus.PrintDump();
另外,查看原始HTTP请求和响应标头也可以提供有关请求错误的大量见解。