背景: ASP.Net ページに Ax2012 DB の画像を表示しようとしています。
問題:画像が Ax2012 DB に BLOB (または Ax コンテナー) として保存されます。これを C#.Net Web サービス (BusinessConnector 経由で接続) でバイト配列に変換するか、直接 Base64 文字列に変換する必要があります。
私は何をしましたか: 以下のコードでは、imageObjectがシリアル化できないという例外が発生します。これはある程度理解できますが、他にどのようにすればよいでしょうか?
コードビハインド:
while (axRecord.Found)
{
string workerRecId = axRecord.get_Field("WorkerRecId").ToString();
string name = axRecord.get_Field("Name").ToString();
string image;
using (MemoryStream ms = new MemoryStream())
{
AxaptaContainer imageObject = (AxaptaContainer)axRecord.get_Field("Image");
new BinaryFormatter().Serialize(ms, imageObject);
image = Convert.ToBase64String(ms.ToArray());
}
string wppServiceWarehouse = axRecord.get_Field("WPPServiceWarehouse").ToString();
dataTable.Rows.Add(new object[] { workerRecId, name, image, wppServiceWarehouse });
axRecord.Next();
}
ASP ページ:
<asp:Image id="employee_ProfilePhoto" runat="server" imageUrl='<%# "data:image/png;base64," + Eval("Image") %>'/>
また、それを文字列にキャストしようとしましたが、その場合、例外はスローされませんが、画像もスローされません;)
何かアドバイス?
ありがとう