未找到Servicestack protobuf请求处理程序

时间:2013-09-21 00:20:43

标签: servicestack protobuf-net

我正在使用protobuf插件,我基本上拥有与示例完全相同的设置(我只是更改了代表我的域的东西,并为DTO添加了一些属性)。

我已成功创建该服务。当我使用以下方法调用webservice时,它运行并返回正确的数据: HTP:// MYSERVER:端口/帐户/ 02345432格式= X-protobuf的

但是,当我尝试以下列方式以编程方式连接到服务时:

var client = new ProtoBufServiceClient("htp://myserver:port");
var request = new GetAccount
                      {
                          AccountNumber = "02345432"
                      };

var result = client.Send<GetAccountResponse>("GET", "/Account", request);

我收到异常“处理程序未找到请求”

我在异常响应正文中注意到的是它尝试访问的URL是: HTP:// MYSERVER:端口/账户账户号码= 02345432

(是的,我故意使用htp来避免链接禁令)

显然我错过了一些东西。有人能指出我的错误吗?


编辑1

@stefan我还阅读了“Winning with Rest&amp; ProtoBuf”,我基本上已经完成了该文章的内容。问题是文章永远不会展示如何使用ProtoBufServiceClient来使用web服务。我到达与文章完全相同的位置(我的webservice在浏览正确的URL时返回保存的二进制文件,其中包含正确的数据)。当我尝试你的建议做客户。获取&lt; ..&gt;(“/ Account / 02345432”)我得到一个不同的例外:无效的电线类型;


编辑2

我发现错误,遗憾的是没什么令人兴奋的:PEBKAC。我忽略了将我返回的数据包装在我的ResponseDTO中,所以真的“无效的线型”应该让我知道。直到我开始逐行比较我发现了这一点。因此,通过序列化意外对象并返回它,服务堆栈通过我的精度不足而做得最好。不幸的是,另一端的客户期待一个AccountResponse DTO,而不是一个原始账户。

1 个答案:

答案 0 :(得分:1)

也许其他人可以更好地回答这个问题,但我也会尝试回答它。

ServiceStack C# Client中的文档描述了REST API的文档  我们使用client.Get或client.Post。

如果您阅读ServiceStack测试中的代码,(项目ServiceStack.WebHost.Endpoints.Tests, ServiceStack.WebHost.IntegrationTests)你会看到一些例子

喜欢

     var response = client.Get<MoviesResponse>("/cached/movies"); 
    //  or    
      var response = client.Post<ProtoBufEmail>(  "/cached/protobuf",
                           new UncachedProtoBufEmail {
                                      FromAddress = fromEmail
                                       });
     // or using the Send without Rest method
                var response = client.Send<ProtoBufEmail>(request);

您还可以阅读有关#WINNING with C# ServiceStack: REST with ProtoBuf

的有用帖子

我不确定,如果使用Get或Post,将解决您的问题。

错误“找不到请求处理程序”可能与您的路由有关。

正如您所写,您可以使用Uri“/ Account / 02345432”成功调用网络服务

你的Get方法应该是

          var result = client.Get<GetAccountResponse>("/Account/02345432");

也许这Designing a REST-ful service with ServiceStack也很有帮助。