2012-05-06 75 views
1

我有用于处理表格数据(从远程服务器),并发送基于表格数据的用户的电子邮件的传统.CFM(ColdFusion的)页面。现在我不再使用ColdFusion,而是在'免费'的ASP.NET(3.5)中托管。我不确定我有多少控制权。但我在想,如果我能有所有要求(实际上,形式职位)要去.CFM页面重定向到一个aspx页面,我可以做必要的处理Global.asax文件。 如何在共享主机提供商限制内完成此操作?我知道我可以在IIS中创建一个虚拟目录。例如,www.xyz.com/processform.cfm可以定向到www.xyz.com/processform.aspx?Asp.net处理.CFM文件或从.cfm重定向到.aspx页面?

回答

0

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

在Web.Config中,在“处理程序”节点,以确保表单提交到.CFM将被加工添加这个,否则我得到了一些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!

+0

还有一件事:我不得不从web.config文件中删除以下内容,因为它产生了一些“编码”错误: IrfanClemson

2

有两种方法做到这一点:

如果你想每一个CFM文件映射到一个aspx页面,您可以做到这一点通过将urlMapping中收集到的System.Web部分:

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

如果你想在全球范围内办理.CFM文件的任何请求,你能做到这一点在Global.asax中在开始请求事件:

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

两种方式都是不依赖于主机,以便GoDaddy的上是不是一个概率LEM。

在第一个选项的表格数据将被whily你必须编写逻辑将表单数据传递到要重定向页面第二个选项保持。

如果我没有错,但是我不知道,也许Server.Transfer的维护表单数据

+0

好吧,我会试试这个。谢谢! – IrfanClemson

+0

嗨,我仍在努力。一个复杂的因素是,它是在将表单发布数据发送到http://www.xyz.com/xxx.cfm页面的远程服务器上运行的Flash Player,到目前为止您的解决方案无法工作。我试图首先从一个aspx页面模拟帖子... – IrfanClemson

+0

我不认为您的解决方案会按原样运行。从远程服务器发布时发生错误。错误页面确实显示了.cfm页面的目标服务器的URL,错误为:405 - 不允许使用HTTP动词访问此页面。 您正在查找的页面无法显示,因为使用了无效方法(HTTP动词)来尝试访问。 web.config拒绝绝对URL,这就是为什么重定向失败?谢谢。 – IrfanClemson