1

フォーム データを (リモート サーバーから) 処理し、フォーム データに基づいてユーザーに電子メールを送信するために使用される従来の .cfm (ColdFusion) ページがあります。現在、私は ColdFusion を使用しなくなり、代わりに「無料」の ASP.NET (3.5) でホスティングしています。それをどれだけコントロールできるかはわかりません。しかし、.cfm ページに送られるすべてのリクエスト (実際にはフォームの投稿) が必要な処理を実行できる aspx ページにリダイレクトされる global.asax ファイルを作成できるかどうかを考えていました。共有ホスティングプロバイダーの制限内でこれを行うにはどうすればよいですか? IIS で仮想ディレクトリを作成できることはわかっています。たとえば、www.xyz.com/processform.cfm は www.xyz.com/processform.aspx?

4

2 に答える 2

2

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 は問題になりません。

最初のオプションではフォーム データが維持されますが、2 番目のオプションでは、フォーム データをリダイレクトするページに渡すロジックを記述する必要があります。

私が間違っていなければ、よくわかりませんが、おそらく Server.Transfer はフォームデータを保持しています

于 2012-05-06T13:28:33.570 に答える
0

Koby Mizrahy が私を助けてくれました。私の問題は、GoDaddy の IIS クラシック モードで、Web サイトのメイン アプリケーションとして Blog Engine .NET 2.0 を実行していたことです。そのため、.cfm 拡張子は ASP.NET エンジンによって処理されなかったため、Web.Config または Global.asax への変更は役に立ちませんでした。統合モードに変更する必要がありました。これが私が修正したことです:

Web.Config で、これを 'Handlers' ノードに追加して、.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 に答える