Webサービスでオーバーロードされたメソッドを使用しようとしていますが、Visual Studio 2005で "Web参照の追加"を試みるとSystem.InvalidOperationExceptionが発生します。 ):オーバーロードされたメソッドを使用してWebサービスにアクセスする方法
public class FileService : System.Web.Services.WebService
{
private static readonly MetaData[] EmptyMetaData = new MetaData[0];
public FileService()
{
// a few innocent lines of constructor code here...
}
[WebMethod(MessageName = "UploadFileBasic",
Description = "Upload a file with no metadata properties")]
public string UploadFile(string trimURL
, byte[] incomingArray
, string fileName
, string TrimRecordTypeName)
{
return UploadFile(trimURL
, incomingArray
, fileName
, TrimRecordTypeName
, EmptyMetaData);
}
[WebMethod(MessageName = "UploadFile",
Description = "Upload a file with an array of metadata properties (Name/Value pairs)")]
public string UploadFile(string trimURL
, byte[] incomingArray
, string FileName
, string TrimRecordTypeName
, MetaData[] metaDataArray)
{
// body of UploadFile function here
私はWebMethod属性の異なるMessageNameにプロパティを供給すると、この問題を解決するが、ここで私が手全体のエラーメッセージであるだろうと思った:
どちらも可能System.String UploadFileBasic(可能System.String、バイト[ ]、System.String、System.String)とSystem.String UploadFile(System.String、Byte []、System.String、System.String)を使用します。彼はメッセージの名前 'UploadFileBasic'です。メソッドの一意のメッセージ名を指定するには、WebMethodカスタム属性のMessageNameプロパティを使用します。
Webサービスが正常にコンパイルされます。私はここで何が間違っているのか分かりません。
は、私は今私の方法のエラーを参照してください。私のWebクライアントは、UploadFileまたはUploadFileBasicを呼び出すことができます。私のWebサービスでは、現在は一意に定義されています(オーバーロードはありません)。もっと重要なことに、別の提案のおかげで、UploadFileBasicのコードは、最後のパラメータとして空の配列を提供するUploadFileの呼び出しになりました。あなたの助けをありがとう、ジョン。 –
この投稿は実際に質問に答えていないので、なぜ気になるのですか? – Gnial0id
@ Gnial0id:5年以上前、OPはそれが答えであると感じ、12人の他の人も投票しました。なぜそれについてコメントするの? 「SOAP Webサービスでオーバーロードされたメソッドを処理する方法」に対する真の答えは、「SOAPにはオーバーロードされたメソッドの概念がありません」です。 –