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