أين أنا ذاهب خطأ في استدعاء أساليب ويب ASMX من مسج؟
سؤال
ولدي webmethod بسيط على 2.0 تطبيق asp.net (باستخدام 1.0 ملحقات ليس ملحقات 3.5 اياكس). أنا محاولة استدعاء الأسلوب من مسج وعندما تفعل ذلك كما في الأمثلة لا تعد ولا تحصى تظهر على شبكة الإنترنت، وهنا على SO، وأحصل على إرجاع رسالة خطأ خادم الداخلية.
إليك قانون بلدي الحالي:
[WebMethod]
[ScriptMethod(ResponseFormat=ResponseFormat.Json)]
public string Select(string login)
{
UserProfile profile = UserProfile.GetUserProfile(login);
return "{ FirstName: '" + profile.FirstName + "', " +
"LastName: '" + profile.LastName + "', " +
"EmailAddress: '" + profile.EmailAddress + "', " +
"PhoneNumber: '" + profile.PhoneNumber + "' }";
}
والآن مسج:
$.ajax({
type: "POST",
url: "Services/ProfileService.asmx/Select",
dataType: "json",
data: "{'login':'DOMAIN%5CUSER1'}",
contentType: "application/json; charset=utf-8",
success: function(msg){ alert(msg); },
error: function(xhr){ alert(xhr.statusText);}
});
وزينت خدمة ويب مع [ScriptService]
السمة كذلك. إذا كنت التعليق خارج contentType، تغيير نوع البيانات إلى نص، وتغيير البيانات لتكون سلسلة الاستعلام (اسم = القيمة)، وأحصل على XML عاد بشكل مناسب.
وأين أنا ذاهب خطأ؟
وUPDATE: أنا أستخدم مسج V1.3.1 والاختبار في كل IE6 وفايرفوكس 3. انني اتلقى نتائج متسقة.
المحلول
وكان هذا خطأ غبي من جانبي. تم حل المشكلة. بينما كنت تضمنت إشارة إلى ملحقات AJAX، لقد نسيت أن كتابة httphandler لخدمات ASMX إلى فئة ScriptHandlerFactory.
وإضافة هذا حل المشكلة.
ومنذ أن كنت قد حصلت على بعض رسائل البريد الإلكتروني تستفسر عن أمثلة أو كيف تم حل المشكلة، كتبت بلوق وظيفة حول كيفية القيام بذلك الحساء إلى المكسرات.
HTTP: //randomactsofcoding.blogspot كوم / 2009/03 / مسج-سلمان-وasmx-20-services.html
نصائح أخرى
وييب. يجب عليك التخلي عن ASMX لتمويل رأس المال العامل. توصية من مايكروسوفت نفسها. واعتقد انه لن يساعدك في مشكلتك، ولكن يمكنك أن تفعل جيدا للنظر في تمويل رأس المال العامل أو على الأقل البدء في البحث في هذه التكنولوجيا.
وكان لي نفس المشكلة ولكن كانت ثابتة عندما أضفت ما يلي إلى ملف التعليمات البرمجية
[System.Web.Script.Services.ScriptService]