3

这里有一个边缘案例:我需要从 razor 调用 servicestack 服务(同一个网站)现在我正在做

CheckIfConfiguredResponse aResponse= new JsonServiceClient("http:\\localhost:2000").Get<CheckIfConfiguredResponse>("/CheckIfConfigured"); 

这是正确的方法吗?还是有更好的?另外,如何避免手动指定网址并让它自动填充主机(因为它是同一个网站)

在此先感谢,威尔。

4

1 回答 1

6

您永远不想仅仅为了调用 ServiceStack 服务而对自己进行 HTTP 调用。

与其他框架不同,ServiceStack 中的服务只是自动连接的 C# 类型,您可以像其他所有已注册的 IOC 依赖项一样从 IOC 访问它们。即在 Razor 视图中,您可以简单地解决它并直接从 IOC 调用它:

var response = base.Get<CheckIfConfiguredService>().Get(new CheckIfConfigured());

这会像正常的自动连接 C# 依赖项一样解析和调用服务,但不会注入当前请求上下文。如果您的服务确实需要它,您可以改用AppHostBase.ResolveService,例如:

var response = AppHostBase
  .ResolveService<CheckIfConfiguredService>(HttpContext.Current)
  .Get(new CheckIfConfigured());
于 2013-04-12T04:48:36.147 回答