エクストラネット セキュリティ (ASP.Net メンバーシップに基づく) で保護されているページで Winnovatives PDFConverter を使用すると問題が発生します。
いくつかの異なるアプローチを試しましたが、次の方法ではローカル マシンで作業できますが、他の場所では作業できません。
ログイン ページのコード。このコードは、次のログイン プロセスをバイパスする必要があります。
// check that the current "user" isn't logged in and is the Winnovative UserAgent
if (!Sitecore.Context.IsLoggedIn && Request.UserAgent.Contains(".NET CLR"))
{
//Login with a dummy user I've created
Sitecore.Security.Authentication.AuthenticationManager.Login("extranet\\pdf", "pdf", true);
//redirect to former page
}
PDF を生成するページは、次のコードを使用します: private void PDFPrint(string url) {
PdfConverter pdfConverter = new PdfConverter();
pdfConverter.LicenseKey = "our license";
url = Request.Url.Scheme + "://" + Request.Url.Host + url;
byte[] downloadBytes = pdfConverter.GetPdfFromUrlBytes(url);
HttpResponse response = HttpContext.Current.Response;
response.Clear();
response.AddHeader("Content-Type", "binary/octet-stream");
response.AddHeader("Content-Disposition", "attachment; filename=" + Sitecore.Context.Item.Name + ".pdf" + "; size=" + downloadBytes.Length.ToString());
response.Flush();
response.BinaryWrite(downloadBytes);
response.Flush();
response.End();
}
私が得ている例外はこれです:
「URL からメタファイルを取得できませんでした。URL から画像を取得できませんでした。URL にアクセスできません..」
また、Winnovative FAQ からこのトリックを試してみましたが、役に立ちませんでした: http://www.winnovative-software.com/FAQ.aspx#authenticationQ
また、WebClient または HttpWebRequest を使用してコンテンツを取得しようとしました。
しかし、私がしていることは、ローカル以外ではうまくいかないようです。
基本的に、Winnovatives コンバーターで現在ログインしているユーザーを使用する方法、カスタムの "pdf" ユーザーまたは応答から html を取得する別の方法を作成したいと考えています。
この質問が漠然としすぎていないことを願っていますが、質問するのはちょっと難しいと思います。しかし、基本的には、Sitecore の通常のエクストラネット セキュリティによって保護されている、私が制御する Sitecore ソリューションのページから HTML コンテンツを取得したいと考えています。この html コンテンツは、文字列または byte[] 形式である必要があります。
Stackoverflowers を助けてください、あなたは私の唯一の希望です! :P