我有一个旧的 .cfm (ColdFusion) 页面,用于处理表单数据(来自远程服务器)并根据表单数据向用户发送电子邮件。现在我不再使用 ColdFusion,而是托管在“免费”的 ASP.NET (3.5) 上。我不确定我对此有多少控制权。但我在想我是否可以拥有一个 global.asax 文件,其中所有转到 .cfm 页面的请求(实际上是表单帖子)都被重定向到我可以进行所需处理的 aspx 页面。如何在共享托管服务提供商的限制范围内做到这一点?我知道我可以在 IIS 中创建一个虚拟目录。例如,www.xyz.com/processform.cfm 可以定向到 www.xyz.com/processform.aspx?
问问题
2032 次
2 回答
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 不是问题。
在第一个选项中,表单数据将被维护,而在第二个选项中,您必须编写逻辑以将表单数据传递到要重定向的页面。
如果我没有错,但我不确定,也许 Server.Transfer 维护表单数据
于 2012-05-06T13:28:33.570 回答
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");
}
}
问题解决了!非常感谢米兹拉伊!
于 2012-05-06T23:19:12.187 回答