Отключение проверки запросов 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>