小编stu*_*win的帖子

使用yield return枚举器方法在Visual Studio中进行调试监视的问题

我有一个方法,它返回一个IEnumerable<>使用yield return语法构建的方法:

namespace Validation
{
    public class UserValidator
    {
        public IEnumerable<ValidationError> Validate(User user)
        {
            if (String.IsNullOrEmpty(user.Name))
            {
                yield return new ValidationError("Name", ValidationErrorType.Required);
            }

            [...]

            yield break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我在方法中放置断点,我可以跨越每一行,但如果我尝试使用Watch或Immediate窗口来查看变量的值,我会收到此错误:

无法通过嵌套类型"Validation.UserValidator"访问外部类型"Validation.UserValidator.Validate"的非静态成员

有谁知道为什么会这样,我怎么能绕过它?

debugging ienumerable watch yield-return visual-studio-2008

11
推荐指数
2
解决办法
3010
查看次数

如果用户将表单提交到仅POST操作并且其身份验证已超时,则登录后重定向会导致404错误

我有一个使用表单身份验证的MVC应用程序,我收到404错误.发生的事情是,当用户的身份验证超时时,用户恰好将表单提交给仅POST操作,并将其重定向到登录页面.登录后,他们将使用GET重定向回原始URL,这将导致404错误,因为操作仅限POST.

我有两个问题:

  1. 解决这个问题的想法是以某种方式检测被重定向到的动作是否是仅POST操作,而是重定向到主页.我该怎么做呢?

  2. 理想情况下,应用程序会记住发布的值,并通过POST将它们提交到原始URL,但我不知道如何绕过Forms身份验证来执行此操作,我怀疑这会对安全漏洞开放.这是一个好主意,如果是这样,怎么办呢?

asp.net-mvc forms-authentication http-post

5
推荐指数
1
解决办法
1403
查看次数

跟踪不在MVC中的OnResultExecuted()中工作

我正在尝试从ASP.NET MVC应用程序输出到Trace.axd.我在OnActionExecuting(),OnActionExecuted(),OnResultExecuting()和OnResultExecuted()中都有跟踪,除了OnResultExecuted()之外,它们都输出到Trace.axd.

为了完整性,这里是我的代码(与OnActionX()完全相同):

    protected override void OnResultExecuting(ResultExecutingContext filterContext)
    {
        resultStartTime = DateTime.Now;
        filterContext.HttpContext.Trace.Warn("OnResultExecuting: " + actionStartTime);
        base.OnResultExecuting(filterContext);
    }

    protected override void OnResultExecuted(ResultExecutedContext filterContext)
    {
        DateTime resultEndTime = DateTime.Now;
        filterContext.HttpContext.Trace.Warn("OnResultExecuted: " + resultEndTime);
        filterContext.HttpContext.Trace.Warn("OnResultExecuted - OnResultExecuting: " + (resultEndTime - resultStartTime).TotalSeconds);
        base.OnResultExecuted(filterContext);
    }
Run Code Online (Sandbox Code Playgroud)

我正在使用ELMAH,但我已禁用它,我仍然遇到问题.

asp.net-mvc trace action-filter

0
推荐指数
1
解决办法
885
查看次数