2011-10-28 26 views
7

मैं एक आवेदन है कि चार्टिंग पर काफी निर्भर करता और वर्तमान में चार्ट ASP.Net विकास सर्वर में काम करेंगे, लेकिन है (विन 2008 सर्वर जब मैं अपने सर्वर पर प्रकाशित करने का प्रयास आर 2, आईआईएस 7), चार्ट दिखाई नहीं देते हैं।ASP.NET चार्टिंग नियंत्रण उत्पादन सर्वर पर काम नहीं कर रहा

फायरबग का उपयोग करके, मैं देख सकता हूं कि चार्ट Img.axd पर कॉल 404 देता है, और मुझे आईई में एक खाली छवि धारक, या फ़ायरफ़ॉक्स में कुछ भी नहीं मिलता है। मैंने अभी तक लगभग 3 या 4 घंटे की खोज की है, और बस सिफारिश की गई सब कुछ के बारे में कोशिश की है, लेकिन कुछ भी काम नहीं कर रहा है।

मैं ImageLocation विन्यास के बजाय, स्मृति/HttpImageHandler उपयोग करना चाहते हैं।

मेरे Web.Config

<appSettings> 
    <!--<add key="ChartImageHandler" value="storage=file;timeout=20;dir=c:\TempImageFiles\;" />--> 
    <add key="ChartImageHandler" value="storage=memory;timeout=20;deleteAfterServicing=false" /> 
    </appSettings> 
    <system.webServer> 
    <handlers> 
     <remove name="ChartImageHandler" /> 
     <add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD,POST" 
     path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
    </handlers> 
    </system.webServer> 
    <system.web> 
    <httpHandlers> 
     <add path="ChartImg.axd" verb="GET,HEAD,POST" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
     validate="false" /> 
    </httpHandlers> 
    <pages> 
     <controls> 
     <add tagPrefix="asp" namespace="System.Web.UI.DataVisualization.Charting" 
      assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
     </controls> 
    </pages> 
    <compilation debug="true" targetFramework="4.0"> 
     <assemblies> 
     <add assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     </assemblies> 
    </compilation> 
    <customErrors mode="Off"/> 
    </system.web> 

किसी को भी किसी भी विचार, जहां मैं अपने सर्वर पर काम करने से इस रखने के लिए गलत जा रहा हूँ है?

+0

y यू कोई फायदा नहीं [फ्यूजन चार्ट] (http://www.fusioncharts.com/free/), यह भयानक और नि: शुल्क है। – Bastardo

+0

@bastardo अब नहीं http://www.fusioncharts.com/goodies/fusioncharts-free/ – Zerotoinfinity

उत्तर

5
चल

मुझे मेरी समस्या का उत्तर मिला, लेकिन मेरा मानना ​​है कि मेरी समस्या विशेष रूप से मेरे कोड को चलाने के तरीके से बनी हुई है।

एक बार जब मैं अपने चार्ट इमेज हैंडलर के लिए ऐप सेटिंग्स के तहत privateImages=false सेट करता हूं, तो मेरी छवियों को फ़ाइल स्टोरेज या HttpHandler के साथ मेमोरी स्टोरेज के साथ छवि स्थान का उपयोग करके कोई समस्या नहीं आई है।

मैं सूची here को देखा और महसूस किया मेरे कोड निम्न में से कोई नहीं है:

  • प्रमाणीकरण
  • SessionID
  • AnonymousID

तो privateImages=true की अंतर्निहित डिफ़ॉल्ट सेटिंग गया था मुझे अपनी छवियों को डाउनलोड करने से रोकते हुए। जब मैं privateImages=false सेट करता हूं तो मुझे कोई समस्या नहीं थी और चार्ट सही तरीके से काम करते थे। मैंने अपने एप्लिकेशन को विंडोज प्रमाणीकरण का उपयोग करने के लिए सेट किया है, और privateImages=true सेट किया है और मेरे चार्ट अब छवि स्थान सेटिंग या HttpHandler सेटिंग के साथ उत्पन्न किए जा रहे हैं।

उम्मीद है कि यह उपयोगी है। मुझे पता है कि मैंने काफी समय बिताया और कहीं भी नहीं मिला।

1

यह सुरक्षा/अनुमति मुद्दे की तरह लगता है। क्या आप चार्ट को स्थानीय फ़ोल्डर में सहेज रहे हैं, फिर उस फ़ोल्डर के लिए आईआईएस उपयोगकर्ता और/या नेटवर्क सेवाओं के उपयोगकर्ताओं के लिए लेखन अनुमति असाइन करें।

+0

हालांकि मैं छवि स्थान का उपयोग नहीं करने का प्रयास कर रहा हूं, मैंने नेटवर्क सेवा को मेरे c: \ TempImageFiles \ फ़ोल्डर के लिए अनुमतियां संशोधित की हैं, और छवियों को फ़ोल्डर में रखा जाता है, जो मुझे विश्वास दिलाता है कि यह इरादे से काम करता है, लेकिन वे मेरे आवेदन के लिए आगे नहीं आ रहे हैं। ऐसा करने पर मुझे अभी भी 404 त्रुटि मिलती है। – Adam

+0

अपने आईआईएस फ़ोल्डर के तहत 'tempimagefile' फ़ोल्डर बनाने का प्रयास करें और इसे सीधे 'www.yourdomain.com/Tempimagefile/char.jpg' जैसे वेब से एक्सेस करने का प्रयास करें और देखें कि यह काम करता है या नहीं। फिर अपने वेबपृष्ठ में इस स्थान का उपयोग करें। – dpac

+0

या, फ़ाइल में बजाए स्मृति में छवि बनाने के लिए ऐप सेटिंग्स में चार्ट इमेज हैंडलर चश्मा बदलें। – AgapwIesu

0

अपने वेब सर्वर पर स्थापित करें माइक्रोसॉफ्ट चार्ट नियंत्रण या कोशिश यह:

ASP.Net Chart Control On Shared Hosting Environment

यह भी जांच कि HttpHandler अपने web.config में system.webServer में पंजीकृत है जब आईआईएस 7. तहत

+0

मेरा मानना ​​है कि चार्ट नियंत्रण .NET 4.0 फ्रेमवर्क में बनाए गए हैं। हैंडलर आईआईएस प्रबंधक – Adam

3

यह कॉन्फ़िगरेशन मेरे लिए काम करता है। आपको स्मृति के रूप में स्मृति का उपयोग करने की आवश्यकता है।

< add key="ChartImageHandler" value="storage=memory;deleteAfterServicing=true;timeout=20;"/> 
+0

में हैंडलर मैपिंग्स के तहत आवेदन के लिए सूची में मौजूद है, मुझे एहसास है कि यह एक पुरानी पोस्ट है, लेकिन क्या आप मुझे बता सकते हैं कि आपने कोड की उपरोक्त रेखा को कहां डाला है? धन्यवाद। – htm11h

+0

App.Config फ़ाइल में अनुभाग –

+0

में मुझे लगता है कि यह वास्तविक जवाब है। समस्या यह प्रतीत होती है कि यदि आप स्टोरेज को इसके डिफ़ॉल्ट मान ("फ़ाइल") से छोड़ देते हैं, तो हैंडलर फ़ाइल बनाने और क्लाइंट को इसकी सेवा करने का प्रयास करता है। यदि उपयोगकर्ता को उस चार छवि हैंडलर ऐप सेटिंग में निर्दिष्ट सर्वर स्थान पर फ़ाइलों को बनाने का अधिकार नहीं है, तो पूरी चीज विफल हो जाती है। लेकिन हम शायद सर्वर के लिए मेमोरी में छवि बनाने और क्लाइंट को वहां से फ़ीड करने के लिए चाहते हैं। फ़ाइल प्रमाणीकरण समस्याओं में प्राप्त होने वाली भौतिक फ़ाइल बनाने की कोई आवश्यकता नहीं है। – AgapwIesu

0
<controls> 
     <add tagPrefix="asp" namespace="System.Web.UI.DataVisualization.Charting" 
      assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
    </controls> 

इस प्रयास करें: बदल संस्करण = 4.0.0.0 संस्करण के लिए = 3.5.0.0

+0

यह केवल तब लागू होगा यदि आप .NET 3.5 का उपयोग कर रहे थे? –

0

यह कोशिश यह वेब के मामले में हल किया गया था।config रनटाइम त्रुटि

<pre> 
<add key="ChartImageHandler" value="storage=memory;timeout=20;deleteAfterServicing=true;Url=~\temp\" 

/>