質問

ったパスの配列を単純なオブジェクトwebサービスで、私はっこの中にエラーがコンパイルのwebクライアントプロジェクト:

できない暗黙的に変換タイプ'TRIMBrokerUtil.メタデータ[]'を'TRIMBrokerASMXProxy.ASMXProxy.メタデータ[]'

こちらでは"のユーティリティ"プロジェクトまとめTRIMBrokerUtil.dll:

namespace TRIMBrokerUtil
{
    public class MetaData
    {
    protected string _Name;
    protected string _Value;
    public MetaData(string keyword, string setting) 
    {
        this.Name = keyword;
        this.Value = setting;
    }
    public string Name
    {
        get
        {
        return this._Name;
        }
        set
        {
        Name = value;
        }
    }
    public string Value
    {
        get
        {
        return this._Value;
        }
        set
        {
        _Value = value;
        }
    }
    }

ここでは、スニペットのwebサービスも統微:使用TRIMBrokerUtil;名前空間TRIMBrokerService { [WebService(ス名="http://tempuri.org/")] [WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)] [ToolboxItem(false)] 公共のクラスFileService:システム。ます。サービスWebService {

    [WebMethod]
    public string UploadFile(byte[] incomingArray
        , string FileName
        , long FileLengthInBytes
        , MetaData[] metaDataArray)
    {

...と、使用後のこと:

Update update = BuildMetaData(metaDataArray);

ト:

private Update BuildMetaData(MetaData[] nvPairs)
{
    Update update = new Update();
    InputProperty[] ip = new InputProperty[nvPairs.Length];
    int i;
    for (i=0; i < nvPairs.Length; i++)
    {
    ip[i].Name = "udf:" + nvPairs[i].Name;
    ip[i].Val = nvPairs[i].Value;
    }
    update.Items = ip;
    return update;
}

次に、(経由の追加"ウェブを参照していま私のプロキシクラスのASMX webservice別プロジェクトで集約しながら問題ありません。※内部に生成されます。csファイルを見たいのはこうい:

    [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/UploadFile", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
    public string UploadFile([System.Xml.Serialization.XmlElementAttribute(DataType="base64Binary")] byte[] incomingArray, string FileName, long FileLengthInBytes, MetaData[] metaDataArray) {
        object[] results = this.Invoke("UploadFile", new object[] {
                    incomingArray,
                    FileName,
                    FileLengthInBytes,
                    metaDataArray});
        return ((string)(results[0]));
    }

現在のエラーが発生するもの編集、webクライアントプロジェクト(デフォルトです。aspx.cs):

    using TRIMBrokerUtil;

public partial class _Default : System.Web.UI.Page
{
    private void UploadFile(HttpPostedFile postedFile
                , string fileNameOnly
                , MetaData[] metaDataArray)
    {
        string strURI = string.Empty;
        TRIMBrokerASMXProxy.ASMXProxy.FileService client = new TRIMBrokerASMXProxy.ASMXProxy.FileService();
        BinaryReader b = new BinaryReader(postedFile.InputStream);
        byte[] binData = b.ReadBytes(numBytes);
        TRIMBrokerASMXProxy.ASMXProxy.MetaData[] kvData = metaDataArray; // error complains about this line
        strURI = client.UploadFile(binData, fileNameOnly, binData.Length, kvData );

また変化の最後の2ライン上でこの線:

strURI = client.UploadFile(binData, fileNameOnly, binData.Length, metaDataArray);

---でもその変化を紹介する第2のエラーからのコンパイラを読み取るとして、

最高過負荷方法の一致のための'TRIMBrokerASMXProxy.ASMXProxy.FileService.UploadFile(byte[],string,long,TRIMBrokerASMXProxy.ASMXProxy.メタデータ[])"の一部が無効引数

(注元の誤差"について変換できない"の2ndエラー)。

申し訳ないのでデフォルト値が設定されます。希望することができ明の混乱した。

役に立ちましたか?

解決

あなたはTRIMBrokerASMXProxy.ASMXProxy.MetaDataの配列にTRIMBrokerUtil.MetaDataの配列を代入しようとしています。 asp.netプロキシは、独自のタイプを宣言することを忘れないでください。

ただ、プロキシタイプを使用して新しい配列にデータをコピーします。

他のヒント

追加された場合は参照のWebサービス、Visual Studioの自動生成コードは、オブジェクトとして使用されるパラメーターの機能をwebサービスです。ここにお TRIMBrokerASMXProxy.ASMXProxy.MetaData クラスが出ているのです。

このと同じではないお TRIMBrokerUtil.MetaData クラスです。を除去することができ、クラスから TRIMBrokerUtil 名前空間での利用はwebサービスプロキシです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top