1

我在 ASP.NET 网络表单中的请求验证存在问题,我很确定这是因为我在 IIS 7.5(Windows 7 - 本地开发机器)上托管了一个 .NET 3.5 项目。

本质上,我收到了来自外部站点的回发(这完全不在我的控制范围内)并收到以下异常:

A potentially dangerous Request.QueryString value was detected from the client (DATA="<IDP MSGTYPE="Authen...").

我在页面声明中设置了这个:

<%@ page language="C#" autoeventwireup="true" inherits="postexternal" enableviewstate="false" masterpagefile="~/SiteBase/transactional.master" Codebehind="postexternal.aspx.cs" validaterequest="false" %>

(此外,我也尝试在 web.config/page 中将其关闭 - 无济于事。

我认为这可能与(MS 所说的)ASP.NET 4.0 中所做的重大更改有关,如下所述: http ://www.asp.net/learn/whitepapers/aspnet4/break-changes#0.1__Toc256770147

但是,如果我将该配置添加到我的 web.config 中,则会出现配置错误(因为它在 .NET 2.0 应用程序池中运行)。

无论我看起来如何,我现在都被困住了,所以我会很感激人们的任何指示/建议。无论如何我可以通过其他方式解决这个问题吗?)。我可以尝试安装 .NET 2.0,但我不确定它是否会起作用(而且似乎是一种非常脆弱的尝试方法)。

谢谢。

4

2 回答 2

4

我也有这个问题,将它添加到 web.config 解决了这个问题。

<httpRuntime requestPathInvalidCharacters="" />

默认情况下,.Net 4.0 拒绝所有带有 <>*%&:\? 的请求 可能对您造成问题的字符,就像对我一样。

[ConfigurationProperty("requestPathInvalidCharacters", DefaultValue=@"<,>,*,%,&,:,\,?")]
public string RequestPathInvalidCharacters { get; set; }
于 2011-11-05T00:46:20.967 回答
0

您可以在 tihs 页面上找到解决方案: https ://msdn.microsoft.com/en-us/library/hh882339.aspx

或者只是在 system.web 标记之后更新您的 web.config 文件:

</system.web>
<location path="MyPage.aspx">
    <system.web>
        <pages validateRequest="false" />
        <httpRuntime requestValidationMode="2.0" />
    </system.web>
</location> 
于 2015-11-26T14:58:03.850 回答