会话和Cookie无法在IIS中使用反向代理

时间:2017-06-28 10:06:26

标签: c# asp.net iis model-view-controller reverse-proxy

我使用IIS创建了反向代理,步骤如下。 (环境设置)

  1. 将我的网站1托管到IIS中。 (此网站的URL是website1.com)
  2. 将我的website2托管到IIS中。 (此网站的URL是website2.com)
  3. 仅创建一个web.config文件,并将其作为反向代理在IIS中作为公共域托管。 (此网站URL为localhost)
  4. 现在我打开localhost并加载website1.com的包含。
  5. 当我打开localhost / web2时,它会加载website2.com的包含
  6. 它正如我预期的那样正常工作,并且通过在localhost web.config文件中编写以下代码来工作

    <configuration>
          <system.webServer>
            <rewrite>
                  <rules>
                    <clear/>
                    <rule name="Reverse Proxy to web2" stopProcessing="true">
                      <match url="^web2(.*)" />
                      <action type="Rewrite" url="http://website2.com{R:1}" />
                    </rule>
                    <rule name="Reverse Proxy to Main" stopProcessing="true">
                      <match url="(.*)" />
                      <action type="Rewrite" url="http://website1.com/{R:1}" />
                    </rule>
                  </rules>
                  <outboundRules>
                    <clear/>
                    <rule name="Add application prefix" preCondition="IsHTML">
                      <match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^(.*)" />
                      <conditions>
                        <add input="{URL}" pattern="^/(web2).*" />
                      </conditions>
                      <action type="Rewrite" value="/{C:1}{R:1}" />
                    </rule>
                    <preConditions>
                      <preCondition name="IsHTML">
                        <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
                      </preCondition>
                    </preConditions>
                  </outboundRules>
                </rewrite>
            <urlCompression doDynamicCompression="false" />
          </system.webServer>
        </configuration>
    

    问题/问题 反向代理工作正常,但当它加载website1.com的包含时,我发现了一些错误,如下所示。

    1. 我正在使用会话的某个地方所以当我在当时点击localhost时使用反向代理我没有得到会话值。会话值为null。
    2. 所以我已将会话转换为cookie。同样的问题我发现cookie存储在浏览器中,但是我在使用反向代理设置获取cookie时获得空值。
    3. 直接使用网站(当我点击website1.com时),网站运行良好。
    4. 请注意,该网站是在asp.net MVC中开发的。
    5. 我在一行中说我的问题,即会话和cookie都没有使用IIS的反向代理。

      任何人都可以帮助我吗?我提前感谢您的努力。

0 个答案:

没有答案