【发布时间】:2012-03-21 10:30:13
【问题描述】:
我有 40 种不同的网络方法的网络服务。 我可以在我的 Web 服务中使用 HttpContext 获取请求发送的方法吗?
我需要它,因为我有所有方法都激活的抽象通用命令,并且我只能访问 HttpContext。
谢谢!
【问题讨论】:
标签: c# web-services http httpcontext
我有 40 种不同的网络方法的网络服务。 我可以在我的 Web 服务中使用 HttpContext 获取请求发送的方法吗?
我需要它,因为我有所有方法都激活的抽象通用命令,并且我只能访问 HttpContext。
谢谢!
【问题讨论】:
标签: c# web-services http httpcontext
如果我理解正确您的问题,您可以使用HttpRequest 的PathInfo 属性:
string methodName = HttpContext.Current.Request.PathInfo;
字符串 methodName 将是带有斜杠前缀 (/) 的方法名称:"/MyWebMethod"。
【讨论】:
someBase/MyWebService.asmx/MyWebMethod?您是否在web.config 的<system.webserver> 部分使用任何URL 映射模块?
HttpContext.Current.Request.Path 看起来如何?
你可能需要:
HttpContext.Current
但请确保您已打开 ASPX 兼容模式,否则您将无法访问该属性
您也可以像这样将函数的名称保存到 Items 数组中:
void myServiceMethod()
{
HttpContext.Current.Items["MethodName"] = "myServiceMethod";
// ...
// here comes your method implementation
}
然后你可以在任何地方阅读HttpContext.Current.Items["MethodName"]
集合 HttpContext.Current.Items 仅对当前请求有效,因此您可以将其用作任何请求相关信息的存储。
当请求被响应时,它就是垃圾。
【讨论】: