我有一个客户,他的站点在 iis7.5 中配置,运行 asp.net 4.0。该站点配置了一个静态 IP 地址,具有有效的通配符证书,其标头设置为通配符 leavemanagement.co.za 和 www.leavemanagement.co.za。
客户使用公司名称作为子域前缀来访问应用程序,以便正确获取登录信息等。我认为应用程序使用前缀作为一种身份识别形式,以便在他们登录后返回正确的信息。例如,您可以转到http://demo.leavemanagement.co.za或者https://leavemanagement.co.za为了能够获取您的登录信息,如果您手动使用其中任一方式,则网站将 100% 正常运行。
我尝试使用各种 web.config 重写规则来自动切换到 https,但它所做的只是导致应用程序错误。如下所示
Server Error in '/' Application.
未将对象引用设置为对象实例。说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其在代码中起源位置的更多信息。
- 异常详细信息:
System.NullReferenceException:未将对象引用设置为对象的实例。
- 源错误:
执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常来源和位置的信息。
堆栈跟踪:
[NullReferenceException: Object reference not set to an instance of an object.] Leave.Core.Security.FormsAuthenticationUserStateModule.PreSendRequestHeaders(Object sender, EventArgs e) +65 System.Web.SendResponseExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +137 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +69
我尝试过的重写规则有很多,我们尝试过的最后一个是这个
<rewrite>
<rules>
<rule name="HTTP to HTTPS redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}"
redirectType="Permanent" />
</rule>
</rules>
<outboundRules>
<rule name="Add Strict-Transport-Security when HTTPS" enabled="true">
<match serverVariable="RESPONSE_Strict_Transport_Security"
pattern=".*" />
<conditions>
<add input="{HTTPS}" pattern="on" ignoreCase="true" />
</conditions>
<action type="Rewrite" value="max-age=31536000" />
</rule>
</outboundRules>
</rewrite>
如果有人能帮助我,请..