Отключение проверки запросов ASP.NET (только для одной страницы) в проекте.NET 3.5, размещенном на IIS 7.5 с установленным только.NET 4.0

У меня проблема с проверкой запросов в веб-формах ASP.NET, и я уверен, что это связано с тем, что я размещаю проект.NET 3.5 на IIS 7.5 (Windows 7 - локальная машина разработки).

По сути, я получаю постбэк с внешнего сайта (который находится вне моего контроля) и получаю следующее исключение:

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/breaking-changes

Но если я добавлю эту конфигурацию в мой web.config, я получу ошибку конфигурации (так как она работает в пуле приложений.NET 2.0).

Как бы я ни выглядел, я застрял на данный момент, поэтому был бы признателен за любые советы / советы людей. Могу ли я обойти это как-нибудь иначе?). Я мог бы попытаться установить.NET 2.0, но я не уверен, что это даже сработает (и кажется довольно хрупким методом).

Благодарю.

2 ответа

Решение

У меня тоже была эта проблема, и добавление ее в web.config решило проблему.

<httpRuntime requestPathInvalidCharacters="" />

По умолчанию.Net 4.0 отклоняет все запросы с <>*%&:\? персонажи, которые могут вызывать проблему для вас, как это было для меня.

[ConfigurationProperty("requestPathInvalidCharacters", DefaultValue=@"<,>,*,%,&,:,\,?")]
public string RequestPathInvalidCharacters { get; set; }

Вы можете найти решение на этой странице: https://msdn.microsoft.com/en-us/library/hh882339.aspx

или просто обновите ваш файл web.config после тега system.web следующим образом:

</system.web>
<location path="MyPage.aspx">
    <system.web>
        <pages validateRequest="false" />
        <httpRuntime requestValidationMode="2.0" />
    </system.web>
</location> 
Другие вопросы по тегам