2011-10-28 35 views
7

Tôi có một ứng dụng dựa trên biểu đồ và hiện tại các biểu đồ sẽ hoạt động trong Máy chủ phát triển ASP.Net, nhưng khi tôi cố gắng xuất bản lên máy chủ của mình (Máy chủ Win 2008 R2, IIS 7), các biểu đồ không hiển thị.Kiểm soát biểu đồ ASP.NET không hoạt động trên máy chủ sản xuất

Sử dụng Firebug, tôi có thể thấy rằng lệnh gọi đến ChartImg.axd trả về 404 và tất cả những gì tôi nhận được là một trình giữ hình ảnh trống trong IE hoặc không có gì trong Firefox. Tôi đã tìm kiếm khoảng 3 hoặc 4 giờ cho đến nay, và đã cố gắng chỉ là về tất cả mọi thứ được đề nghị, nhưng không có gì có vẻ là làm việc.

Tôi muốn sử dụng bộ nhớ/HttpImageHandler, thay vì cấu hình ImageLocation.

Web.Config My

<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> 

Có ai có bất kỳ ý tưởng nơi tôi sẽ sai lầm khi giữ này từ làm việc trên máy chủ của tôi?

+0

y u không sử dụng [Charts Fusion] (http://www.fusioncharts.com/free/), nó là tuyệt vời và miễn phí. – Bastardo

+0

@bastardo Hiện tại không có http://www.fusioncharts.com/goodies/fusioncharts-free/ – Zerotoinfinity

Trả lời

5

Tôi đã tìm thấy câu trả lời cho vấn đề của mình, nhưng tôi tin rằng vấn đề của tôi bắt nguồn từ cách mã của tôi chạy.

Khi tôi đặt privateImages=false trong appSettings cho ChartImageHandler của tôi, hình ảnh của tôi không gặp vấn đề gì khi sử dụng ImageLocation với lưu trữ tệp hoặc HttpHandler với bộ nhớ.

tôi nhìn vào danh sách here và nhận ra rằng mã của tôi có NONE trong các cách sau:

  • Xác thực
  • SessionID
  • AnonymousID

để các thiết lập mặc định ngầm của privateImages=true được giúp tôi không tải xuống hình ảnh của mình. Khi tôi đặt privateImages=false Tôi không gặp vấn đề gì và biểu đồ hoạt động chính xác. Tôi đặt ứng dụng của mình để sử dụng Xác thực Windows và đặt privateImages=true và biểu đồ của tôi hiện đang được tạo bằng cài đặt Vị trí hình ảnh hoặc cài đặt HttpHandler.

Hy vọng điều này hữu ích. Tôi biết tôi đã dành một thời gian dài đào bới và không có nơi nào.

1

Có vẻ như vấn đề về bảo mật/quyền. Bạn có lưu biểu đồ vào thư mục cục bộ, sau đó gán quyền ghi cho người dùng IIS và/hoặc người dùng dịch vụ mạng cho thư mục đó.

+0

Mặc dù tôi đang cố gắng không sử dụng Vị trí hình ảnh, tôi đã cung cấp cho dịch vụ mạng sửa đổi quyền cho thư mục c: \ TempImageFiles \ của mình và các hình ảnh được đặt trong thư mục, dẫn tôi tin rằng nó hoạt động như dự định, nhưng chúng không được chuyển tiếp đến ứng dụng của tôi. Tôi vẫn có vẻ gặp lỗi 404 khi thực hiện việc này. – Adam

+0

Thử tạo thư mục 'tempimagefile' trong thư mục IIS của bạn và thử truy cập trực tiếp từ web như 'www.yourdomain.com/Tempimagefile/char.jpg' và xem nó có hoạt động không. Sau đó, sử dụng vị trí này trong trang web của bạn. – dpac

+0

Hoặc, thay đổi thông số kỹ thuật ChartImageHandler trong cài đặt ứng dụng để tạo hình ảnh trong bộ nhớ thay vì trong tệp. – AgapwIesu

0

Cài đặt Chart Controls Microsoft trên máy chủ web của bạn hoặc thử này:

ASP.Net Chart Control On Shared Hosting Environment

Ngoài ra kiểm tra rằng HttpHandler được đăng ký tại system.webServer trong web.config của bạn khi chạy trong IIS 7.

+0

Tôi tin rằng Điều khiển biểu đồ được tích hợp vào .NET 4.0 Framework. Trình xử lý có mặt trong các bảng liệt kê cho ứng dụng dưới ánh xạ Handler trong IIS Manager – Adam

3

Cấu hình này hoạt động với tôi. Bạn cần sử dụng bộ nhớ làm bộ nhớ.

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

Tôi nhận ra đây là một bài đăng cũ, nhưng bạn có thể cho tôi biết chính xác bạn đã chèn dòng mã ở trên vào đâu không? Cám ơn. – htm11h

+0

Trong tệp App.Config trong phần

+0

Tôi nghĩ đây là câu trả lời thực sự. Vấn đề dường như là nếu bạn rời khỏi kho lưu trữ với giá trị mặc định của nó ("tệp"), thì trình xử lý cố gắng tạo một tệp và phân phối nó cho máy khách. Nếu người dùng không có quyền tạo tệp trên vị trí máy chủ được chỉ định trong cài đặt ứng dụng xử lý hình ảnh char đó thì toàn bộ sự cố sẽ không thành công. Nhưng những gì chúng tôi có thể muốn là cho máy chủ để tạo ra hình ảnh trong bộ nhớ và đưa nó ra cho khách hàng từ đó. Không cần phải tạo một tệp vật lý được đưa vào các sự cố ủy quyền tệp. – 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> 

thử điều này: thay đổi Version = 4.0.0.0 để Version = 3.5.0.0

+0

Điều này sẽ chỉ áp dụng nếu bạn đang sử dụng .Net 3.5 sẽ không? –

0

thử này nó đã được giải quyết trong trường hợp của web.cấu hình lỗi thời gian chạy

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

/>

Các vấn đề liên quan