我有用户global.asax,我已经在我的ASP.NET应用程序中编写了这段代码:
<%@ Application CodeBehind="Global.asax.cs" Language="C#" %>
<script RunAt="server">
public void Application_Start()
{
string str = Context.Request.Url.AbsoluteUri.Replace("http", "https");
Context.RewritePath(str);
}
</script>
但它给了我这个:
"Request is not available in this context"
答案 0 :(得分:4)
从http到https,您需要进行重定向。
RewritePath无法正常工作的主要原因是http和https在不同的端口上工作。此外,应用程序启动不是这个调用的地方。 BeginRequest就是那个。
因此,如果您想自动将所有请求更改为https,请使用此代码。
protected void Application_BeginRequest(Object sender, EventArgs e)
{
HttpApplication app = (HttpApplication)sender;
string cTheFile = HttpContext.Current.Request.Path;
string sExtentionOfThisFile = System.IO.Path.GetExtension(cTheFile);
if (sExtentionOfThisFile.Equals(".aspx", StringComparison.InvariantCultureIgnoreCase))
{
if (!app.Context.Request.IsSecureConnection)
{
Response.Redirect(app.Context.Request.RawUrl.Replace("http://", "https://"), true);
return;
}
}
// rest of your code here and below
}
答案 1 :(得分:1)
请求在Application_Start
中不可用,现在为时尚早
您需要在Application_BeginRequest
中重写路径,有关示例,请参阅http://msdn.microsoft.com/en-us/library/sa5wkk6d.aspx。