2

次のMSDNのガイドによると、ストリーム転送を使用する操作では、入力/出力パラメーターを1つだけ持つことができます。

リンク: http: //msdn.microsoft.com/en-us/library/ms731913.aspx(「ストリーミング転送の制限」の見出しを参照)

クライアント/コンシューマーがファイルをアップロードできるようにするWCFサービスにストリーミング転送を使用しています。アップロード自体は正常に機能しますが、Streamオブジェクトとともにさらに2つの入力パラメーター「stringfilename」と「intuserid」を渡す方法が必要です。

どうすればこれを行うことができますか?

4

2 に答える 2

4

データコントラクトで使用できるヘッダーと呼ばれるものがあります。

インターフェースの例:

[ServiceContract]
public interface IFile
{
   [OperationContract]
   Stream DownloadFile(int fileid);

   [OperationContract]
   bool UploadFile(FileUploadMessage request);
}

これを別のファイルに入れます:

[MessageContract]
public class FileUploadMessage
{
[MessageHeader(MustUnderstand = true)]
public int MyInt {get;set;

[MessageHeader(MustUnderstand = true)]
public string MyString {get;set;

[MessageBodyMember(Order = 1)]
public System.IO.Stream FileByteStream {get;set;}
}
于 2011-05-23T07:59:17.880 に答える
0

私はやや似たような問題を抱えています。テストプロジェクトを作成し、見つけた投稿を使用して、別のプロジェクトからそれを呼び出すwcfサービスを正常に作成しました。私には解決策と2つのWebプロジェクトがあります。一方のプロジェクトは、サービス参照を使用してもう一方のプロジェクトのサービスを呼び出します。wcfサービス(「I」で始まるファイル)を作成して生成されたインターフェイスファイルに、ServiceContractとメッセージコントラクトがあります。これはすべてうまくいきました。それから私は当社のメインプロジェクトに行きました。2つのSilverlightプロジェクトをホストするメインのWebプロジェクトがあります。しかし、ウェブプロジェクトは実際にはプロジェクトではなく、プロジェクトのないウェブサイトとして始まりました。2つのSilverlightプロジェクトをWebサイトに追加すると、おそらく3つのプロジェクトすべてのソリューションが作成されたと思います。しかし、私は' 「実際の」プロジェクトのように、vs2010がメインのWebサイトをどのように見るかはわかりませんが、ファイルへのポインターはないと思います。メインのWebサイトでwcfサービスを作成し、ServiceContractとMessageContractをインターフェイスファイルに配置すると、MessageContractとその子クラスに関する「インターフェイスは型を宣言できません」というメッセージが表示されました。MessageContractを取得して別のファイルに入れることで、この投稿に関するアドバイスに従おうとしていますが、ファイルの種類がわかりません。メッセージコントラクトをクラス(csファイル)に入れてみました。ただし、ServiceContractはMessageContract内のクラスを参照し、ServiceContractは、それらがパブリックであっても、MessageContract内のクラスを認識しなくなります。

ありがとう、イチジク

于 2011-08-10T21:26:46.530 に答える