0

次のような WCF Data Service を追加しました。

[WebGet]
public byte[] GetPdf(int id)
{
...
return result;
}

ブラウザから呼び出すと

http://localhost:50300/data/MyService/GetPdf?id=114

次のような応答が返されます。

<?xml version="1.0" encoding="UTF-8"?>
<d:GetPdf m:type="Edm.Binary"
 xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
 xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">JVBERi0xLjQNCiXi48/TDQolDQold1BERjMgYnkgV1
 ...</d:GetPdf>

次に、Silverlight クライアントでバイトを読み取ろうとします。

 private void ReadPdf()
    {
        Uri uri = new Uri("http://localhost:50300/data/MyService/GetPdf?id=114");
        var myQuery = client.BeginExecute(uri, MyCallback, null, "GET", null);
    }

そして MyCallback で

  public void MyCallback(IAsyncResult result)
  {
     ???
  }

その結果、 System.Data.Services.Client.QueryResult を取得しますが、それをどのように読み取るかわかりません。

4

1 に答える 1

0

この例を参照してください: http://msdn.microsoft.com/en-us/library/vstudio/dd756367(v=vs.100).aspx

基本的に、次のようなものが必要です。

// Get the original query from the result.
DataServiceQuery<Customer> query = result as DataServiceQuery<Customer>;

byte[] resultBytes = query.EndExecute(result))
// Convert the bytes to your PDF or whatever

どのように変換を戻すかはあなた次第です。もちろん、バイトをシリアル化したかどうかによって異なります。

于 2013-07-16T00:13:59.460 に答える