Asp.net处理.CFM文件或从.cfm重定向到.aspx页面?

时间:2012-05-06 13:05:35

标签: asp.net redirect coldfusion

我有一个遗留的.cfm(ColdFusion)页面,用于处理表单数据(来自远程服务器)并根据表单数据发送用户的电子邮件。现在我不再使用ColdFusion而是托管在'免费'ASP.NET(3.5)。我不确定我对此有多少控制权。但我在想是否可以有一个global.asax文件,其中所有发送到.cfm页面的请求(实际上是表单帖子)都被重定向到我可以进行所需处理的aspx页面。 如何在共享主机提供商限制内完成?我知道我可以在IIS中创建一个虚拟目录。例如,www.xyz.com / processform.cfm可以定向到www.xyz.com/processform.aspx?

2 个答案:

答案 0 :(得分:2)

有两种方法可以做到:

如果要将每个cfm文件映射到aspx页面,可以通过将urlMapping集合添加到system.web部分来实现:

<system.web>
    <urlMappings>
        <add url="~/mypage.cfm" mappedUrl="~/mypage.aspx"/>
    </urlMappings>
</system.web>

如果要全局处理.cfm文件的任何请求您可以在Begin请求事件中的global.asax中执行此操作:

 protected void Application_BeginRequest(object sender, EventArgs e)
 {
        if(HttpContext.Current.Request.CurrentExecutionFilePathExtension == ".cfm")
        {
            // Do what ever you need to do
        }
 }

这两种方式都不依赖于主机,所以godaddy不是问题。

在第一个选项中,表单数据将在第二个选项中保持,您必须编写逻辑以将表单数据传递到要重定向的页面。

如果我没错,但我不确定,也许Server.Transfer维护表单数据

答案 1 :(得分:0)

Koby Mizrahy接近帮助我。我的问题是我在GoDaddy的IIS经典模式下运行Blog Engine .NET 2.0作为我网站的主要应用程序。因此,ASP.NET引擎不处理.cfm扩展名,因此对Web.Config或Global.asax的更改都没有帮助。我不得不改为集成模式。以下是我要解决的问题:

在Web.Config中,在“处理程序”节点中添加了这个,以确保处理.cfm的Form Posts,否则我会收到405错误。

 <add name="ColdFusion" path="*.cfm" verb="*" type="System.Web.StaticFileHandler" resourceType="Unspecified" preCondition="integratedMode" />

然后在global.asax中,我在Application_beginrequest处理程序

中有这个
if (Request.Url.ToString().Contains("TourEmail-act.cfm"))// 
    {
   Server.Transfer("/360Flash/TourEmail-act.aspx");
   }
 }

问题解决了!非常感谢Mizrahy!