Url重写和自定义错误消息

时间:2015-10-14 21:56:17

标签: asp.net url-rewriting iis-7.5

我在我的主机上配置了一个网站,并在80和443上配置了api。我正在尝试拆分2并将它们放在不同的端口上,并使用IIS url重写来路由请求。

所以,我创建了一个只有web.config的新空白站点并将重写规则放在那里,我的请求正在正确路由,但是我无法在API返回400的情况下使用该案例。

即。如果您直接使用Bad请求ping API(指定端口),它会正确返回400 Bad request json response

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;}

但是,通过URL重写,您会看到一个html页面

<httpErrors existingResponse="PassThrough"/>

我尝试将spmd if labindex == 1 program1 elseif labindex ==2 program2 end 添加到web.config但是没有帮助......

编辑:我有一个领导,它似乎与无效的字符有关,api有一个param:在其中。仍在努力弄清楚如何解决这个问题

编辑2:请参阅下面答案中的解决方案。

有关如何解决此问题的任何提示?

1 个答案:

答案 0 :(得分:0)

所以,问题是api允许url中的一些特殊字符,我必须在web.config中指定

请参阅链接:http://forums.iis.net/t/1193674.aspx

我最终将以下行添加到web.config:

<httpRuntime targetFramework="4.5" requestPathInvalidCharacters="&lt;,&gt;,*,%,&amp;,\"/>