14

我正在尝试重定向到一个视图并不断收到问题标题中发布的错误。

在断点测试期间,通过代码 iv 的第一位的代码位于设置消息和设置异常的下方。返回重定向后继续后显示的下一页如下。

在此处输入图像描述

向 ErrorController 和错误模型添加断点我发现代码永远不会到达那里。

我试图发布到的视图是一个错误页面。这是帮助您查看问题的代码。

重定向动作:

string message;
message = "An error has occured during the communication to lightstone, this is likely a timeout issue and could be the result of a bad connection. Please go back and try again.";
return RedirectToAction("Error", "Error", new { ex = ex.ToString(), message =  message});

我的 ErrorController 中的操作:

public ActionResult Error(string ex, string message)
{
   ViewBag.Message = "Error";
   return View(new ErrorModel(ex, message));
}

我的错误模型:

namespace MvcResComm.Models
{
    public class ErrorModel
    {
        public string ex { get; set; }
        public string message { get; set; }

        public ErrorModel(string ex, string message)
        {
            this.ex = ex;
            this.message = message;
        }
    }
}
4

5 回答 5

23

在项目的根目录web.config下,在system.web节点下:

<system.web>
    <httpRuntime maxUrlLength="10999" maxQueryStringLength="2097151" />
...

此外,我必须在system.webServer节点下添加它,否则我的长查询字符串出现安全错误:

<system.webServer>
    <security>
      <requestFiltering>
        <requestLimits maxUrl="10999" maxQueryString="9999" />
      </requestFiltering>
    </security>
...
于 2013-12-15T03:09:52.270 回答
4

你为什么不使用TempData,它是用来做这样的事情的。例如:

TempData["ErrorMessage"] = "An error has occured during the communication to lightstone, this is likely a timeout issue and could be the result of a bad connection. Please go back and try again.";

检查此链接

编辑

像这样传递您的异常消息:

TempData["Error"] = ex.Message();
TempData["ErrorMessage"] = "An error has occured during the communication to lightstone, this is likely a timeout issue and could be the result of a bad connection. Please go back and try again.";

return RedirectToAction("Error", "Error");

然后只需从您的 访问它ErrorController,例如:

public ActionResult Error(string ex, string message)
{
    var error = (string)TempData["Error"];
    // do other magic ...
}
于 2013-07-11T10:06:50.973 回答
2

<system.web> <httpRuntime>标签下的 web.config 中,您可以设置您的maxQueryStringLength

所以它就像

<system.web>
  <httpRuntime maxQueryStringLength = "**MY NUMBER**" />
</system.web>

查看 msdn 参考:http: //msdn.microsoft.com/en-us/library/e1f13641%28v=vs.100%29.aspx

另外请在 IIS 配置中增加 maxQueryStringLength,查看:

http://www.iis.net/configreference/system.webserver/security/requestfiltering/requestlimits

于 2013-07-11T10:07:10.740 回答
1

在 web.config 文件中有一个可设置的最大 URL 长度值。这个问题有一个类似的问题 ASP.NET MVC, Url Routing: Maximum Path (URL) Length

于 2013-07-11T10:06:21.047 回答
0

我修复了以下问题:运行正常

<system.webServer>
    <security>
        <requestFiltering>
            <alwaysAllowedQueryStrings>
                <add queryString="maxQueryString" />
                <add queryString="maxAllowedContentLength" />
                <add queryString="maxUrl" />
            </alwaysAllowedQueryStrings>
            <requestLimits maxUrl="10999" maxQueryString="2097151" />
        </requestFiltering>
    </security>
</system.webServer>

并添加

<system.web>
    <httpRuntime maxUrlLength="10999" maxQueryStringLength="2097151" />
</system.web>

网络配置

于 2020-02-27T04:01:47.247 回答