如何在.NET http处理程序中检索URL?

时间:2011-12-21 15:26:16

标签: asp.net httphandler

我在ASP.NET应用程序中的服务器上托管图像。 我编写了一个自定义的http处理程序,它可以调整图像的大小,并在数据库中增加“image_view_count”。

现在,我还想做一些记录以了解图像的使用位置。例如:

图片abc.jpg位于我的服务器上www.myserver.com/stuff/abc.jpg 有人通过将其链接到位于www.forum.com/thread.php?id=1234

的论坛帖子中来使用它。

我想在我的http处理程序中检索www.forum.com/thread.php?id=1234网址。当我使用Request.Url.ToString()时,在前面的例子中,我收到www.myserver.com/stuff/abc.jpg。

我该怎么做?托管代码中是否存在与location.href等效的内容?

3 个答案:

答案 0 :(得分:3)

相信您正在寻找Referer标题。

public void ProcessRequest(HttpContext context)
{
  IServiceProvider provider = (IServiceProvider)context;
  HttpWorkerRequest worker = (HttpWorkerRequest)provider.GetService(typeof(HttpWorkerRequest));
  String referer = worker.GetKnownRequestHeader(HttpWorkerRequest.HeaderReferer);
}

答案 1 :(得分:1)

Request.Url是当前请求的网址 - 即加载图片的请求。

您可以通过查看Referer获得所需内容,但这并不总是可靠的。

答案 2 :(得分:0)

您可以检查引用以查看图像的使用位置: http://en.wikipedia.org/wiki/HTTP_referrer

C#

string referer = Request.UrlReferrer.ToString();

如果浏览器未在请求标头中发送referer,则UrlReferrer可以为null。