我正在尝试将aspx中的http调用转换为https
Back Ground:我有一个位于https site.on页面的Aspx页面我参考了谷歌的脚本
Aspx页面参考:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript"></script>
我为Prefix Http创建了一个HttpHandler IHttpHandler接口实现:
public class HttpToHttpsHandler : IHttpHandler
{
public bool IsReusable
{
get { return false; }
}
public void ProcessRequest(HttpContext context)
{
try
{
context.Response.ContentType = "text/plain";
if (context.Request.RawUrl.Contains("http:"))
{
string newUrl = context.Request.RawUrl.Replace("http", "https");
context.Server.Transfer(newUrl);
}
}
catch (Exception)
{
throw;
}
}
}
Web.Config文件注册码:
<httpHandlers>
<add verb="*" path="http:*" type="HttpToHttpsHandler , App_Code"/>
</httpHandlers>
但是我没有在Http处理程序类中获得控件。可能是错误。
答案 0 :(得分:1)
我想知道你的程序集是否被称为“App_Code”。在类型声明中,您必须输入程序集名称,而不是C#文件的文件夹名称。
答案 1 :(得分:0)
路径属性据我所知它是相对位置,它只能取两个值中的一个:name / file-name或要映射的扩展名/文件扩展名。像
<add verb="*" path="*.SampleFileExtension"
type="Example1 " />
或者
<add verb="*" path="demo.*"
type="Example1 " />
我尝试了这两种方法的组合,它也有效,它表示任何以测试开头的内容和任何扩展名都将由处理程序处理:
<add verb="*" path="test*.*"
name="HelloWorldHandler"
type="demo.HelloWorldHandler,App_Code" />
但请注意,这是一个相对路径,因此它表示它不包含来自网址的 http 或 https 值,因此处理程序无法用于验证网址。
答案 2 :(得分:0)
您需要定义包含HttpToHandler
类的程序集名称。
处理程序在程序集中定义为类HttpToHttpsHandler
,如果它位于同一个项目中,那么它将是您的应用程序名称。
完成此article
<httpHandlers>
<add verb="*" path="*.aspx"
type="HttpToHttpsHandler , AssemblyName" />
</httpHandlers>
</system.web>
if (!Request.IsLocal && !Request.IsSecureConnection)
{
string redirectUrl = Request.Url.ToString().Replace("http:", "https:");
Response.Redirect(redirectUrl);
}
HttpRequest.IsSecureConnection
属性确定HTTP
连接是否使用安全套接字(HTTPS).- MSDN