asp.net-mvc-3 – MVC3 AllowHtml属性的问题

前端之家收集整理的这篇文章主要介绍了asp.net-mvc-3 – MVC3 AllowHtml属性的问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个基于MVC3(没有测试版或发行版本的RTM / RTW版本)的Web应用程序,它具有接受 XML文件处理的操作.

当然,这似乎是由于可能的攻击而对MVC而言是邪恶的,所以它不允许它.那么我试着把AllowHtml放在模型对象上呢?

public class XMLModel
    {
        [AllowHtml]
        public string msg { get; set; }
    }

或者我将ValidateInput设置为false,我的操作方法如下所示:

[ValidateInput(false)]
    public ActionResult AddCDR(XMLModel model)
    {
    }

首先有一个“强”类型的模型的原因是我最初尝试使用一个名为“msg”的字符串值作为action方法参数,但总是返回空.

现在,当有人在同一台机器上或从联网的计算机发布到此表单时,msg字段始终为空.

我已经与WireShark验证了数据实际上是在请求中.

现在有一件有趣的事情.这不应该与MVC 3是必要的.但它有微小的差异.

如果我添加到我的网络配置:

<httpRuntime requestValidationMode="2.0" />

它适用于从本地计算机发出的请求,但它不能从另一个系统工作.

我认为AllowHtml版本似乎很优雅 – 如果只是有效.

我也发现了RC2中的一个bug – 再次,这不应该影响我,但是我试图在Application_Start()中添加以下内容

ModelMetadataProviders.Current = new DataAnnotationsModelMetadataProvider();

正如预期的那样,没有什么不同.

一切都符合我的开发计算机(Win7x64,VS2010)的预期,但目标系统(Win2008R2x64,IIS7.5)上面的问题给我一个困难的时刻.

非常重要的一点要注意:如果我发布到没有尖括号的动作,我会按预期得到表单数据.只要尖括号出现了,我的动作根本就没有被调用,或者没有找到表单数据,也没有在动作方法参数中或者在Request.Params [“msg”]中找到它应该.

任何想法允许XML通过?

UPDATE

我已经试图解决这个问题,等待任何人在这里提出答案.我还没有解决,但我已经检查了一些额外的细节;

>首先,我验证了我的开发计算机和Web服务器上安装的ASP.NET MVC 3版本是一样的; v3.0.20105.0(根据添加/删除程序).
> Web应用程序实际上是使用MVC3测试版创建的,然后在出现时转换为RC1和RC2,最后转换为RTM版本.这意味着由于ViewBag的更改,我不得不修改一些代码.然而,由于我不知道其他什么改变了,所以我创建了一个全新的MVC3应用程序与RTM版本,创建一个同名的控制器,使用相同的动作方法,采用类似于当前使用的模型对象,重命名旧的Web应用程序目录,并将这个新的一个到位.发生同样的事情 – 即当从本地机器发出请求时,带有AllowHtml属性的参数会带有所有内容,但是如果它来自远程机器,则HTML(实际上是XML)将被剥离.

>也没有例外.我已经安装了Elmah,并验证了这一点 – 没有异常发生,我的action方法显然只是调用了像从XML中删除的任何东西从参数到方法.

不用说,这让我很疯狂.昨天我有一些建议来看看MVC3的源代码,但不幸的是,这并没有真正帮助我,因为我看不到任何明显的错误,我无法在有问题的服务器上调试代码.

任何见解仍然非常希望,谢谢!

猜你在找的asp.Net相关文章