在我的网站上,我有一个旧的角度指令不再使用,但很多搜索引擎提供商试图在我的网站上点击特定的网址:
/ 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)
答案 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>
参考文献: