Asp.net mvc cshtml(错误)页面中的Razor代码产生错误

Asp.net mvc cshtml(错误)页面中的Razor代码产生错误,asp.net-mvc,asp.net-mvc-3,razor,http-status-code-404,Asp.net Mvc,Asp.net Mvc 3,Razor,Http Status Code 404,我从应用程序抛出404错误。 404错误页面位于/ErrorPages/error\u 404.cshtml 在这个文件中,我只有HTML代码,它可以正常工作。 但如果我添加一些razor代码,它会在浏览器中抛出配置错误。 例如,我添加了布局或一些@Html.ActionLink(… 这是一个错误: 运行时错误 描述:服务器上发生应用程序错误。当前 此应用程序的自定义错误设置将阻止 无法查看应用程序错误 详细信息:允许显示此特定错误消息的详细信息 可在本地服务器计算机上查看,请创建 位于根目录中

我从应用程序抛出404错误。
404错误页面位于
/ErrorPages/error\u 404.cshtml
在这个文件中,我只有HTML代码,它可以正常工作。
但如果我添加一些razor代码,它会在浏览器中抛出配置错误。
例如,我添加了布局或一些
@Html.ActionLink(…

这是一个错误:

运行时错误

描述:服务器上发生应用程序错误。当前 此应用程序的自定义错误设置将阻止 无法查看应用程序错误

详细信息:允许显示此特定错误消息的详细信息 可在本地服务器计算机上查看,请创建 位于根目录中的“web.config”配置文件中的标记 当前web应用程序的目录。此标记 然后应将其“mode”属性设置为“RemoteOnly” 要在远程计算机上查看详细信息,请将“模式”设置为 “关”

这就是我制作404的方式:

public ActionResult Search(string searchTerm)
{
if (city == null)
            {
                throw new HttpException(404, "Some description");               
            }
            else
            {
                return RedirectToAction("Index", "Home", new
                {...
            }
}
当错误页面中没有razor代码时,它会工作,如果没有,我会从上面收到消息。
当我在web配置中设置“mode=Off”时,会收到错误消息:

描述:HTTP 404。您正在查找的资源(或其 依赖项)可能已被删除、名称已更改或 暂时不可用。请查看以下URL并进行更改 确保它拼写正确

请求的URL:/CityPage/导航/搜索

这是来自web配置的值

<customErrors mode="Off">
      <error statusCode="404" redirect="\ErrorPages\Error_cp404.cshtml" />
    </customErrors>

您不应该试图直接呈现
.cshtml
页面。这些是Razor视图。在ASP.NET中,MVC视图是通过控制器操作提供的

因此:

您还可以通过签出来寻找处理错误的替代方法

如果在IIS7+中运行,可能还需要添加以下内容:

<system.webServer>
    ...
    <httpErrors errorMode="Detailed" />
</system.webServer>

...

您不应该试图直接呈现
.cshtml
页面。这些是Razor视图。在ASP.NET中,MVC视图是通过控制器操作提供的

因此:

您还可以通过签出来寻找处理错误的替代方法

如果在IIS7+中运行,可能还需要添加以下内容:

<system.webServer>
    ...
    <httpErrors errorMode="Detailed" />
</system.webServer>

...

在web.config中将自定义错误设置为Off,并告诉我们实际的错误消息。@Judo如果他将自定义错误设置为Off,系统将不会呈现他的错误消息页面,而是显示默认的异常堆栈。1110,您应该调试该页面并显示实际错误我根据您的评论更新了我的问题。在web.con中将自定义错误设置为Offfig并告诉我们实际的错误消息。@Judo如果他设置了自定义错误,系统将不会呈现他的错误消息页面,而是显示默认的异常堆栈。1110,您应该调试该页面并显示实际错误。我根据您的评论更新了我的问题。您在链接中提供的答案解决了问题。谢谢。我认为razor页面可以n在没有控制器类的情况下工作。您在链接中提供的答案解决了问题。谢谢。我认为razor页面可以在没有控制器类的情况下工作。
<system.webServer>
    ...
    <httpErrors errorMode="Detailed" />
</system.webServer>