私の asp.net-mvc アプリケーションには、レガシー ページを表示するページを含める必要があります。このページの本文は、既存の Perl スクリプトを呼び出して作成されます。この Perl スクリプトは外部でホストされています。
このようなことをする方法はありますか:
<!-- #Include virtual="http://www.example.com/theScript.plx"-->
私の asp.net-mvc アプリケーションには、レガシー ページを表示するページを含める必要があります。このページの本文は、既存の Perl スクリプトを呼び出して作成されます。この Perl スクリプトは外部でホストされています。
このようなことをする方法はありますか:
<!-- #Include virtual="http://www.example.com/theScript.plx"-->
ASP.NET サーバー側インクルードでは、サーバーでページをコンパイルする必要があるため、直接インクルードとしてではありません。
ページの読み込み時にjQueryを使用してその URL から HTML をダウンロードすることもできますが、それが完全ではないことは承知しています。
別の方法として (これが機能するかどうかはわかりません) 、ASP.NET MVC コントローラーから perl Web ページに対してWebRequestを実行し、結果の HTML をビューにテキストとして配置することもできます。そうすることで、出力キャッシュなどを利用して、perl ページが頻繁に変更されない場合にヒットを制限することができます。
すべてを一度に実行したい場合は、サーバーから HTTP リクエストを実行して、コンテンツをページに書き込むことができますか?
このようなもの:
Response.Write(GetHtmlPage("http://www.example.com/theScript.plx"));
このメソッドを呼び出す:
public String GetHtmlPage(string strURL)
{
// the html retrieved from the page
String strResult;
WebResponse objResponse;
WebRequest objRequest = System.Net.HttpWebRequest.Create(strURL);
objResponse = objRequest.GetResponse();
// the using keyword will automatically dispose the object
// once complete
using (StreamReader sr = new StreamReader(objResponse.GetResponseStream()))
{
strResult = sr.ReadToEnd();
// Close and clean up the StreamReader
sr.Close();
}
return strResult;
}
(ほとんどのコードはここから露骨にリッピングされているため、チェックされていません)
フレームを使用し、フレーム ソースを含める必要がある URL に設定するだけで、控えめな方法でこれを実装できます。これは非常に単純で、サーバー側またはクライアント側のスクリプトがなくてもダウンする可能性があるため、可能であれば、それが私の好ましいアプローチです。
ただし、htmlがサーバーから来ているように見せたい場合は、手動で含める必要があります-通常はWebRequest
Neilが言うように使用します. パフォーマンスのためにリモート ページをキャッシュすることをお勧めしますが、これは perl スクリプトであるため、ページが動的であると想定しているため、これは良い考えではないかもしれません。