Asp.net拒绝直接访问网页

时间:2010-03-11 13:24:59

标签: asp.net

我有一个网页errors.aspx,需要保护其免受直接访问 我希望只有在被另一个网页重定向时才能访问它。

我该怎么做?

4 个答案:

答案 0 :(得分:1)

如果您使用Server.Transfer重定向到新页面,那么您可以在Context集合中传递一个变量并在新页面中检查它。

第1页

Context.Items.Add("somevar","someval");

第2页

if ( Context.Items["somevar"] == null )
{
    // the page is not redirected from Page 1
}

答案 1 :(得分:0)

在会话中保留一些布尔值,如果未设置该值,则从错误页面抛出异常。在重定向之前设置上一页中的值,就是它

答案 2 :(得分:0)

您可以将redirectMode="ResponseRewrite"添加到web.config中的customErrors标记。这使得错误重定向类似于Server.Transfer而不是Response.Redirect。因此,如果它们位于 SomePage.aspx 并且发生错误而不是更改为 MyErrorPage.aspx 的网址,那么它将保持为 SomePage.aspx 但会从 MyErrorPage.aspx 呈现HTML。在您的 MyErrorPage.aspx 代码后面,您可以查看Request.Path,如果它是 MyErrorPage.aspx ,则表示有人试图直接访问错误页面。在这种情况下,您可以执行Response.End或此时可能要执行的任何其他操作,以防止直接访问此页面。

答案 3 :(得分:0)

将流程插入WebConfig

<system.web>
  <httpHandlers>
    <remove verb="*" path="*.aspx" />
    <add path="*.aspx" verb="*" type="System.Web.HttpNotFoundHandler" />
  </httpHandlers>
</system.web>

<system.webServer>
  <validation validateIntegratedModeConfiguration="false" />
  <handlers>
    <add name="BlockViewHandler" path="*.aspx" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
  </handlers>
</system.webServer>