MVC3,来自哪里的请求

时间:2012-07-20 09:06:57

标签: c# asp.net-mvc-3

尝试找出获取用户来自MVC3的网页的最佳方式。

我正在构建一个下载文件功能,如果用户没有链接到我自己网站上的文件,我想将它们重定向到我选择的页面。

我基本上想阻止人们直接链接到我的文件而不先通过我的网站。

我如何以最可靠的方式做到这一点?

3 个答案:

答案 0 :(得分:3)

超级简单的方法(大部分时间都可以工作),就是看一下控制器中的Request.UrlReferrer。这应该包含访问者来自的URL。

答案 1 :(得分:1)

MVC3仍然以ASP.NET为基础。所以你也可以使用ASP.NET的所有功能......

另一种方法是使用IIS-Extension => https://www.iis.net/community/default.aspx?tabid=34&g=6&i=1288(微软的LeechGuard)

答案 2 :(得分:0)

这就是我现在解决的问题。 如果页面中有文件请求,则显示有关该文件的信息。要下载该文件,用户单击指向同一页面的链接。

当代码检测到用户正在从文件自己的URL请求文件时,该文件将提供给用户。

    private bool RequestIsCommingFromSamePage()
    {
        if (Request.UrlReferrer == null)
            return false;

        string requestURL = Request.UrlReferrer.ToString();
        string pageURL = Request.ServerVariables["HTTP_HOST"] + Request.RawUrl;

        requestURL = requestURL.Replace("http://", "").Replace("https://", "");

        if (requestURL == pageURL || pageURL == null || requestURL == null)
            return true;

        return false;
    }