2010-05-01 15 views
8

की बजाय xml लौटने पर मैंने अपनी साइट की एक टेस्ट कॉपी को एएसपीनेट 4.0 में अपग्रेड किया है और एक अजीब समस्या देखी है जो केवल तब उत्पन्न होती है जब मैं अपने सर्वर पर साइट अपलोड करता हूं।एएसएमएक्स वेब सेवा जेसन में .net 4.0

साइट पर एक एएसएमएक्स वेब सेवा है जो जेसन लौटाती है, फिर भी जब मैं अपने सर्वर पर साइट चलाता हूं तो यह एक्सएमएल लौटाता है। यह एक वर्ष से अधिक के लिए asp.net 3.5 में ठीक काम कर रहा है।

WebMethod सही विशेषताओं के साथ सजाया गया है ...

[WebMethod][ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public List<LocationRecentChange> RecentChanges() 

और मेरे स्थानीय मशीन पर यह json देता है।

अभी तक सर्वर (विंडोज 2008 64 बिट) पर यह एक्सएमएल देता है।

फायरबग कंसोल का उपयोग करके आप 200 ओके प्रतिक्रिया और एक्सएमएल का एक गुच्छा देखेंगे, और मेरी स्थानीय मशीन पर लौटाए गए डेटा जेएसओएन की उम्मीद है।

यहाँ जावास्क्रिप्ट कि सेवा कहता है ..

function loadRecentData() { 
$.ajax({ 
    type: "POST", 
    url: "service/spots.asmx/RecentChanges", 
    data: "{}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: loadRecentUpdates, 
    failure: function(msg) { 
     //alert(msg); 
    } 
}); 

}

कोई सुझाव का स्वागत करते हैं, इस मिल गया मुझे स्टम्प्ड गया है!

उत्तर

7

क्या आप सुनिश्चित हैं कि आपके सर्वर पर .NET 4 स्थापित है?

ScriptHandlerFactory के "प्रकार" .NET 4 में स्ट्रिंग है:

System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 

ASP.NET 4 अब भी शामिल है मशीन स्तर पर अपनी डिफ़ॉल्ट web.config में कि। इसलिए, आपको अपनी प्रोजेक्ट के web.config, 3.5 या 4 में स्क्रिप्ट हैंडलर फैक्टरी में किसी मैपिंग की आवश्यकता नहीं होनी चाहिए।

+0

के system.web सर्वर अनुभाग में चला जाता है सर्वर को आईआईएस के साथ कुछ फंकी चल रहा है। मैं स्थानीय रूप से समस्या को फिर से नहीं बना सकता, लेकिन web.config में आइटम डालने से इसे ठीक किया जाता है। – Baldy

+3

मुझे बिल्कुल वही समस्या है।क्या आप मेरे वेब.कॉन्फिग में जोड़ने के लिए आवश्यक सटीक कोड को शामिल करने के लिए उत्तर संपादित कर सकते हैं (जिसमें सेक्शन को इसमें शामिल करने की आवश्यकता है)? धन्यवाद। – njr101

2

अच्छी तरह से मैं ajax वेब सेवाओं अनुरोध यहाँ नियंत्रित किया जाता है के बारे में पढ़ कर यह पता लगाने में कामयाब रहे ...

http://www.asp.net/%28S%28ywiyuluxr3qb2dfva1z5lgeg%29%29/learn/ajax/tutorial-05-cs.aspx

मूल रूप से asp.net 3.5 जरूरतों से कोई हैंडलर अपने वेब में घोषित किया जाना है। system.webserver के तहत कॉन्फ़िगर हैंडलर अनुभाग ताकि वह डिफ़ॉल्ट के बजाय JSON प्रतिक्रिया वापस कर सके।

यहाँ

<handlers> 
    <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 

आप क्या web.config handlers section को जोड़ने की जरूरत है (यदि आप IIS6 समर्थन करने की आवश्यकता भी httpHandlers अनुभाग में जोड़ें) है ... मैं यह है कि इस जगह की आवश्यकता होगी मेरी संदेह है एक ही हैंडलर का एक .NET 4.0 संस्करण, लेकिन अभी के लिए, यह काम करता है।

+1

मुझे बिल्कुल वही समस्या है। क्या आप उस अनुभाग को शामिल करने के लिए उत्तर संपादित कर सकते हैं जिसमें इसे शामिल करने की आवश्यकता है? और यदि आवश्यक हो तो जैसे कोई भी अतिरिक्त तत्व। धन्यवाद। – njr101

+0

ने इसे आपके लिए अपडेट किया है और प्रासंगिक अनुभाग प्रलेखन – Baldy

+0

पर लिंक जोड़े हैं लेकिन आपने यह नहीं कहा है कि अनुभाग कहां जोड़ें ... यह कहां जाता है? जहां भी मैंने इसे रखा, मुझे एक त्रुटि मिली। – NickG

संबंधित मुद्दे