500 URL重写模块错误ASP.NET核心

时间:2017-03-31 22:25:59

标签: asp.net-core reverse-proxy iis-8

我正在我的DMZ中运行反向代理(RP)服务器(Win 2012 R2)。然后连接到运行Win 2008 R2的LAN服务器。我在另一个Win 2012 R2 LAN盒子前面也有相同的RP服务器。

我们正在RP后面的LAN上部署我们的第一个ASP.NET Core应用程序。它的工作原理是LAN盒是Win 2012 R2。但是,如果我们将应用程序移动到我们的生产Win 2008 R2计算机,它将起作用,除非有一个控制器返回HTML视图(而不是XML或JSON)。同样,完全相同的代码适用于Win 2012 R2 LAN盒,但不适用于Win 2008 R2 LAN盒。

这里是RP web.config(对于除IP和域外的两个LAN服务器都相同)

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
    <rewrite>
        <rules>
            <rule name="ReverseProxyInboundRule1" stopProcessing="true">
                <match url="(.*)" />
                <action type="Rewrite" url="http://10.0.0.254/{R:1}" />
            </rule>
        </rules>
        <outboundRules>
            <rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1">
                <match filterByTags="A, Form, Img" pattern="^http(s)?://10.0.0.254/(.*)" />
                <action type="Rewrite" value="http{R:1}://our-public-domain.com/{R:2}" />
            </rule>
            <preConditions>
                <preCondition name="ResponseIsHtml1">
                    <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
                </preCondition>
            </preConditions>
        </outboundRules>
    </rewrite>
</system.webServer>

在Win 2008 R2 LAN框中,这是web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.webServer>
        <handlers>
            <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
        </handlers>
        <aspNetCore processPath=".\MyApp.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
    </system.webServer>
</configuration>
<!--ProjectGuid: 5x8x39x8-580x-4xx2-955x-76x4x4685415-->

正如我所说,连接到Win 2012 R2或Win 2008 R2框时,同一RP服务器上的配置。另外,我们在Window 2008 R2上有其他不使用ASP.NET Core的站点,这些站点工作正常,但没有一个视图,因为它们只返回XML,JSON和文本。

有什么见解?

2 个答案:

答案 0 :(得分:1)

我发现你在规则中有响应重写。如果响应被压缩,这可能会导致RP服务器中URLRewrite模块出现500错误。您可以通过检查子状态代码来查看详细信息。对于Gzip编码,这通常是500.52。您可以在RP服务器的IIS日志中看到这一点

有关substatuscode iis status code

的更多详细信息

如果错误为500.52,请检查this

答案 1 :(得分:0)

在控制面板中检查是否已安装IIS Express多个。如果您有多个 1.保留默认的IIS Express。 2.卸载其他。 3.修复IIS Express