سؤال

وكان لي عمل webmethod الذي عاد صفيف بايت إلى المتصل:

public byte[] DownloadPDF(string URI)

واضطررت الى تغيير هذا للعودة الانتاج آخر (سلسلة). لذا، قررت أن تغيير أسلوب تماما من خلال العودة الآن الفراغ، وبعد 3 المعلمات مثل هذا:

public void DownloadFile(string URI, out byte[] docContents, out string returnFiletype)

وخدمة الإنترنت بلدي بتصنيف بشكل صحيح ولكن أظن أن هناك خطأ ما مع المعلمة 2ND (أي مجموعة بايت) لأنني عندما "إضافة مرجع ويب" وبناء صفي وكيل، طريقة سوى 2 المعلمات، وليس 3):

[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/DownloadFile", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
    [return: System.Xml.Serialization.XmlElementAttribute("docContents", DataType="base64Binary")]
    public byte[] DownloadFile(string URI, out string returnFiletype) {
        object[] results = this.Invoke("DownloadFile", new object[] {
                    URI});
        returnFiletype = ((string)(results[1]));
        return ((byte[])(results[0]));
    }

وأنا لا أرى لماذا يتم تجاهل بلدي المعلمة 2ND، صفيف بايت، ولكن يبدو أن يكون مصدر المشكلة.

وهذا بالطبع عبث لي في التطبيق العميل على شبكة الإنترنت حيث أحصل على رسالة الخطأ في وقت الترجمة:

No overload for method 'DownloadFile' takes '3' arguments

وهنا هو رمز في عميل على شبكة الإنترنت حيث أحتاج لتمرير 3 الحجج:

myBrokerASMXProxy.ASMXProxy.FileService client = new myASMXProxy.ASMXProxy.FileService();

        byte[] fileDataBytes;
        string fileType;
        client.DownloadFile(URI, fileDataBytes, fileType);

وأنا أفكر في تغيير مرة أخرى للعودة إلى صفيف بايت وإضافة مجرد معلمة واحدة "الخروج" ولكن أعتقد أنه يجب أن أطلب منكم الخبراء حول هذا الأمر وبشكل عام، ما هو أفضل الممارسات للتعامل مع متطلبات إخراج متعددة.

هل كانت مفيدة؟

المحلول

لماذا لا تحاول بك وضع هذا التوقيع:

public bool DownloadFile(string URI, out byte[] docContents, out string returnFiletype)

لنرى ماذا سيحدث؟ وأنا أتفق مع جون السكيت، ولكن لا يزال بإمكانك يمكن إرجاع منطقي مع نتيجة العملية

نصائح أخرى

لا يتم تجاهل صفيف بايت - انه يجري وضع كنوع العودة بدلا من ذلك. أنا لا أعرف لماذا يفعل ذلك، لكنه أكثر منطقية من وجهة نظري. أنا لن تستخدم من المعلمات في طريقة الفراغ. وأظن أن مولد وكيل يأخذ فقط أي طريقة مع المعلمات من ويتحول الأول إلى نوع العودة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top