ServiceStack 将 base.Request.Querystring 作为参数传递给另一个 class
ServiceStack pass base.Request.Querystring as a parameter to another class
我已经实现了 ServiceStack 分页、部分响应、过滤等。我将所有可重用方法放入 RequestUtilities
class.
而且我几乎所有的方法中都有这个 base.Request.Querystring
。 (必须访问请求以检索属性、键、值等内容)。
现在我需要从 XServices.cs
中的 GET()
访问它。我假设我需要传递 base
作为方法的参数来实现这一点。但到目前为止,我找不到办法做到这一点。这个 base
是什么类型?我怎样才能将它作为参数传递?请指教。非常感谢。
来自RequestUtilities.cs
,比如
string qValue = base.Request.QueryString["q"].ToString();
用于XServices.cs
,如:
int count = base.Request.QueryString.Count;
PS:如何在 Stack Overflow 上用突出显示的 class 名称等装饰我的代码段。我使用了 Ctrl + k 但名称、方法等未突出显示。
base.Request
仅指继承自具有 IRequest
属性 的 class 的任何 class,即:
IRequest Request { get; }
主要是指您的 Service
基础 class,但其他内置 ServiceStack classes 像 Razor Views 以及基础 ASP.NET 页面或 ServiceStack控制器 classes 也提供对当前 IRequest 的访问。
IRequest
就像任何其他实例变量一样,您需要将它传递给您的实用程序方法和助手 classes(即来自您的服务),以便它们可以访问它。如果它们只是静态辅助方法,那么使用扩展方法会更好,因此您可以通过以下方式从您的服务中调用它们:
var result = base.Request.MyCustomHelper(arg1);
有关 IRequest
扩展方法的示例,请参阅 HttpRequestExtensions.cs。
如果您在 ASP.NET 主机上,您也可以通过单例访问它:
HostContext.GetCurrentRequest();
但不推荐这样做,因为它取决于主机。
我已经实现了 ServiceStack 分页、部分响应、过滤等。我将所有可重用方法放入 RequestUtilities
class.
而且我几乎所有的方法中都有这个 base.Request.Querystring
。 (必须访问请求以检索属性、键、值等内容)。
现在我需要从 XServices.cs
中的 GET()
访问它。我假设我需要传递 base
作为方法的参数来实现这一点。但到目前为止,我找不到办法做到这一点。这个 base
是什么类型?我怎样才能将它作为参数传递?请指教。非常感谢。
来自RequestUtilities.cs
,比如
string qValue = base.Request.QueryString["q"].ToString();
用于XServices.cs
,如:
int count = base.Request.QueryString.Count;
PS:如何在 Stack Overflow 上用突出显示的 class 名称等装饰我的代码段。我使用了 Ctrl + k 但名称、方法等未突出显示。
base.Request
仅指继承自具有 IRequest
属性 的 class 的任何 class,即:
IRequest Request { get; }
主要是指您的 Service
基础 class,但其他内置 ServiceStack classes 像 Razor Views 以及基础 ASP.NET 页面或 ServiceStack控制器 classes 也提供对当前 IRequest 的访问。
IRequest
就像任何其他实例变量一样,您需要将它传递给您的实用程序方法和助手 classes(即来自您的服务),以便它们可以访问它。如果它们只是静态辅助方法,那么使用扩展方法会更好,因此您可以通过以下方式从您的服务中调用它们:
var result = base.Request.MyCustomHelper(arg1);
有关 IRequest
扩展方法的示例,请参阅 HttpRequestExtensions.cs。
如果您在 ASP.NET 主机上,您也可以通过单例访问它:
HostContext.GetCurrentRequest();
但不推荐这样做,因为它取决于主机。