2015-04-14 68 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 Request。

我想也許如果我玩弄了我的Web.Config設置並修改了system.webServer配置我可以讓它工作,但我仍然只是在WebServiceExceptions的時候才這樣做。

任何人都可以闡明這一點嗎?如何使用另一臺計算機上託管的服務? MSDN Creating Cross Platform Applications是一個有用的讀取,但它仍然使用相同的本地主機方法。它甚至有可能連接到另一臺主機計算機上運行的服務(當然....?)

編輯:添加了一個鏈接到我的代碼在GitHub上,如果有幫助!再次感謝Service Stack Example

+0

沒有看到您的服務器代碼,您還應該檢查請求沒有被客戶端或服務器上的防火牆阻止。 – jklemmack

+0

如果您有時間查看,請提前添加一個鏈接到我的github上。我知道我會非常感激,我檢查了我的防火牆,打開和關閉了它們,並且迄今沒有任何運氣。感謝您的迴應! – UvrD

回答

0

您將以同樣的方式訪問ServiceStack服務,但是您也需要爲ServiceStack服務添加路由,因爲它會自動使用請求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/" 
}); 

如果你得到一個錯誤的請求,這通常是因爲發送惡意請求,例如驗證錯誤。在這些情況下,看看這對WebServiceException的錯誤信息,即你​​可以打印帶有錯誤響應:

webEx.ResponseStatus.PrintDump(); 

而且在看看原始的HTTP請求和響應頭也提供了很多有識之士的請求發生了什麼問題。