忽略路线错误

时间:2015-10-01 12:56:40

标签: asp.net-mvc

在我的网站上,我有一个旧的角度指令不再使用,但很多搜索引擎提供商试图在我的网站上点击特定的网址:

/ SPN / {{ADID}}

这是ActionMethod:

public ActionResult Spn(int adId)
{
    .. my code here

    return RedirectToAction("Index");
}

每次发生这种情况都会将错误记录到elmah中,但是在Elmah中看到这些错误会变得非常烦人,防止此错误记录的最佳方法是什么?在操作方法内部执行代码之前发生错误。

这是一个错误: [ArgumentException:参数字典包含参数' adId'的空条目。非可空类型的System.Int32' for method' System.Web.Mvc.ActionResult Spn(Int32)

2 个答案:

答案 0 :(得分:0)

尝试将action参数设为nullable ..

    public ActionResult Spn(int? adId)
    {
        .. my code here

        return RedirectToAction("Index");
    }

答案 1 :(得分:0)

如果您的操作方法已经不再使用,那么为什么它存在?你应该删除它。这将使您的服务器返回404响应,以便搜索引擎能够将其从索引中删除。

或者,您可以通过设置IgnoreRoute来阻止对网址的访问。

RouteTable.Routes.IgnoreRoute("{folder}/{*pathInfo}", new {folder="[Ss]pn"});

如果您想在其他地方引导仍然访问该网址的流量,请使用IIS rewrite module设置301响应,以便流量不会尝试转到操作方法,从而搜索引擎将知道从其索引中删除URL并将其替换为新URL。

<system.webServer>
    <rewrite>
        <rules>
            <rule name="spn2index" stopProcessing="true">
                <match url="^Spn/?.*$" />
                <action type="Redirect" url="Index" redirectType="Permanent" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

参考文献: