私はSOや他の場所を見て、これについて提起された質問と、私の場合はまだ意味をなさないいくつかの回答を見てきました。
次のものを持つ作業中の VStudio 2010 ソリューションをリファクタリングしています。
- ASMX Web サービスを使用する 1 つのプロジェクト
- プロキシ クラス用の別のプロジェクト ( Web 参照の追加によって生成されるものを除いて、ここにはコードはありません)
- クライアント用の別のプロジェクト (ProxyClass.dll への参照を含む)
新しい VStudio 2010 ソリューションには次の機能があります。
- コントラクト自体のタイプ WCF サービス ライブラリの 1 つのプロジェクト ( IFileService.cs ) コントラクトの実装のためのタイプ WCF サービス ライブラリの 1 つのプロジェクト ( FileService.cs )
- プロキシ クラス用の別のプロジェクト ( Add Service Referenceによって生成されるものを除いて、ここにはコードはありません)
- クライアント用の別のプロジェクト (WCFProxyClass.dll への参照を含む)
以下は、3 つの out パラメータで終了するコントラクトです (同じ実装は同じ順序です)。
[ServiceContract(Name = "IFileService", Namespace = "http://www.cbmiweb.com/TrimWCF/2011/11")]
public interface IFileService
{
[OperationContract]
public string DownloadFile(string trimURL
, string TrimRecordNumber
, string CallerPC
, string RequestorID
, out byte[] docContents
, out string returnFiletype
, out string returnFilename)
{
私のプロキシクラスプロジェクトで生成されたサービス参照の追加は次のとおりです。
public string DownloadFile(
out byte[] docContents
, out string returnFiletype
, out string returnFilename
, string trimURL
, string TrimRecordNumber
, string CallerPC
, string RequestorID)
{
return base.Channel.DownloadFile(out docContents, out returnFiletype, out returnFilename, trimURL, TrimRecordNumber, CallerPC, RequestorID);
}
「WCF で out parms を使用することはできません」から「Add Service Reference を使用するべきではなく、代わりに svcutil.exe を使用する」から「パラメーターの順序は関係ありません...それでも機能します」までの範囲の回答を読みました。
私はここで何をすべきかについて混乱しています (そして、この再配置された順序となぜそれが起こったのか) につながった私が間違ったことをしました)。