2015-10-14 4 views
0

У меня есть веб-сайт и api, настроенные на моем хосте, прослушивающие 80 и 443. Я пытаюсь разбить 2 и поместить их на отдельные порты и использовать переписывание URL-адреса IIS для маршрутизации запросов.Url переписать и пользовательское сообщение об ошибке

Итак, я создал новый пустой сайт только web.config и поставить свои правила перезаписи там, мои запросы перенаправляются правильно, но я не в состоянии получить случай, когда рабочий API возвращает 400.

т.е. если вы пинг API с плохим запросом непосредственно (указать порт), он правильно возвращает 400 Bad запроса JSON ответ

400 Bad Request 

Pragma: no-cache 
X-CorrelationId: 823fc2fd-4ed2-46b6-86e0-50b2abf5d61b 
X-Content-Type-Options: nosniff 
Request-Processing-Time: 606.4377 ms 
OData-Version: 4.0 
Content-Length: 142 
Cache-Control: no-cache 
Content-Type: application/json; odata.metadata=minimal; odata.streaming=true 
Date: Wed, 14 Oct 2015 21:39:58 GMT 
Expires: -1 
P3P: CP="CAO DSP COR ADMa DEV CONi TELi CUR PSA PSD TAI IVDi OUR SAMi BUS DEM NAV STA UNI COM INT PHY ONL FIN PUR" 
Server: Microsoft-IIS/8.5 
X-AspNet-Version: 4.0.30319 
X-Powered-By: ASP.NET 

{ 
    "error":{ 
    "code":"20112","message":"Invalid Entity ID specified.", 
    } 
} 

Однако через URL переписать вы видите HTML-страницу

400 Bad Request 


Content-Length: 3506 
Cache-Control: private 
Content-Type: text/html; charset=utf-8 
Date: Wed, 14 Oct 2015 21:33:42 GMT 
Server: Microsoft-IIS/8.5 
X-AspNet-Version: 4.0.30319 
X-Powered-By: ASP.NET 

<!DOCTYPE html> 
<html> 
    <head> 
     <title>A potentially dangerous Request.Path value was detected from the client (:).</title> 
     <meta name="viewport" content="width=device-width" /> 
     <style> 
     body {font-family:"Verdana";font-weight:normal;font-size: .7em;color:black;} 
     p {font-family:"Verdana";font-weight:normal;color:black;margin-top: -5px} 
     b {font-family:"Verdana";font-weight:bold;color:black;margin-top: -5px} 
     H1 { font-family:"Verdana";font-weight:normal;font-size:18pt;color:red } 
     H2 { font-family:"Verdana";font-weight:normal;font-size:14pt;color:maroon } 
     pre {font-family:"Consolas","Lucida Console",Monospace;font-size:11pt;margin:0;padding:0.5em;line-height:14pt} 
     .marker {font-weight: bold; color: black;text-decoration: none;} 

Я попытался добавить <httpErrors existingResponse="PassThrough"/> в web.config, но это не помогло ...

Edit: У меня есть руководство, по-видимому, связан с утратившими символами, то апи имеет параметры с: в нем , Все еще пытаюсь понять, как это решить.

Редактировать 2: См. Разрешение в ответе ниже.

Любые советы о том, как разрешить это?

+0

Как выглядит ваш запрос? – jgasiorowski

ответ

0

Итак, проблема заключалась в том, что апи позволяет некоторые специальные символы в URL, который я должен был указать в web.config

Смотрите ссылку: http://forums.iis.net/t/1193674.aspx

Я кончался, добавив следующую строку web.config:

<httpRuntime targetFramework="4.5" requestPathInvalidCharacters="&lt;,&gt;,*,%,&amp;,\"/> 
Смежные вопросы