我正在编写一个WebService,想要找出客户端用来调用我的WebMethod的URL。
Ok ..我会详细解释..
假设我有一个webservice(http://myWebservice/HashGenerator/HashValidator.asmx) 如下
[WebMethod]
public string ValidateCode(string sCode)
{
//need to check requested url here.The call will be coming from different sites
//For example www.abc.com/accesscode.aspx
}
请给我一个解决方案。
答案 0 :(得分:18)
如果您使用.asmx网络服务并需要获取当前网址,可以尝试以下网址。
HttpContext.Current.Request.Url
答案 1 :(得分:5)
你的问题不是很清楚。如果您尝试获取调用Web服务的ASPX页面的URL,则除非将其作为参数传递给Web方法或某些自定义HTTP标头,否则无法执行此操作。这是一个电话的例子:
var proxy = new YourWebServiceProxy();
string currentUrl = HttpContext.Current.Request.Url.ToString();
proxy.ValidateCode("some code", currentUrl);
,您的网络服务方法现在如下所示:
[WebMethod]
public string ValidateCode(string sCode, string callerUrl)
{
...
}
答案 2 :(得分:5)
要获取客户对当前网站的预览请求的信息,您可以使用UrlReferrer
,如下所示:
//To get the Absolute path of the URI use this
string myPreviousAbsolutePath = Page.Request.UrlReferrer.AbsolutePath;
//To get the Path and Query of the URI use this
string myPreviousPathAndQuery = Page.Request.UrlReferrer.PathAndQuery;
答案 3 :(得分:1)
HttpContext.Current.Handler //This is null when using a web service
我的工作是为所有Web服务调用添加自定义标头(使用Jquery .ajax)。标题包含调用页面的URL:
$.ajaxSetup({
headers: { 'CurrentUrl': '' + document.URL + '' }
});
然后在服务器上获取Web方法内的自定义标头:
HttpContext.Current.Request.Headers["CurrentUrl"]
我想要调用者页面的URL的主要原因是我使用查询字符串参数进行调试。 下面的代码将为您提供调用Web服务的页面中的所有查询字符串参数。
HttpUtility.ParseQueryString(new Uri(HttpContext.Current.Request.Headers["CurrentUrl"]).Query)
答案 4 :(得分:0)
你需要这个:
[WebMethod]
public static string mywebmethod()
{
string parameters = HttpContext.Current.Request.UrlReferrer.PathAndQuery.ToString();
return parameters
}