2009-07-21 23 views
14

Bir web hizmetinde aşırı yüklenmiş yöntemler kullanmaya çalışıyorum ancak Visual Studio 2005'te "Web Referansı Ekle" yi denerken System.InvalidOperationException alıyorum (buradaki kodun ilgili kodları)):Aşırı yüklenmiş yöntemlerle web hizmetine erişme

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 
burada bu sorunu çözmek istiyorsunuz ama WebMethod özniteliği üzerinde farklı bir MessageName özelliği besleyen düşünce

alıyorum tüm hata iletisi:

İkisi System.string UploadFileBasic (System.String, Byte [ ], System.String, System.String) ve System.String UploadFile (System.String, Byte [], System.String, System.String) kullanımı Mesaj adı 'UploadFileBasic'. Yöntemler için benzersiz ileti adları belirtmek üzere WebMethod özel niteliğinin MessageName özelliğini kullanın.

Web hizmeti Tamam derler; Burada neyin yanlış olduğunu göremiyorum.

cevap

13

Benim önerim, aşırı yüklenmiş yöntem adları kullanmamaktır. WSDL'de böyle bir kavram yok, o zaman neden rahatsız oluyorsunuz?

+0

Şimdi hatalarımı görüyoruz. Webclient, UploadFile veya UploadFileBasic'i arayabilir. Web servisim artık hem benzersiz bir şekilde tanımlanıyor (aşırı yükleme yok). Daha da önemlisi, başka bir yerde başka bir öneri sayesinde, UploadFileBasic'in kodu artık sadece son parametre olarak boş bir dizi sağlayan UploadFile'ın çağrılmasıdır. Yardımlarınız için teşekkür ederim John. –

+0

Bu gönderi aslında soruya cevap vermiyor, bu yüzden neden rahatsız oluyorsunuz? – Gnial0id

+0

@ Gnial0id: 5 yıldan fazla bir süre önce OP, bunun bir cevap olduğunu ve diğer 12 kişinin de oy kullandığını düşünüyordu. Bunun üzerine yorum yapmak neden rahatsız? "SOAP web hizmetinde aşırı yüklenme yöntemleri ile nasıl başa çıkılacağı" nın gerçek cevabı "SOAP'ın aşırı yüklenmiş yöntemler hakkında hiçbir fikri yoktur". –

0

Genel olarak, aşırı yüklenmiş yöntemlere sahip web hizmeti arabiriminin arkasında bir sınıf nesnesine sahip olur ve daha sonra asmx.cs dosyanızda farklı adlarla tek tek yöntemler oluşturur. Özniteliklerini kullanabileceğinizi biliyorum, ancak daha kodeksi IMHO yapıyor. Bu birine

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 

:

7

Bu kısmı değiştirmeniz gerekir

[WebServiceBinding(ConformsTo = WsiProfiles.None)] 
İlgili konular