ASP.NET 4.0 WebForms URL重写中断MS图表
我已经在我的项目中添加了新的图表控件,效果很好。我已经定好了ASP.NET 4.0 WebForms URL重写中断MS图表,asp.net,.net-4.0,url-rewriting,charts,Asp.net,.net 4.0,Url Rewriting,Charts,我已经在我的项目中添加了新的图表控件,效果很好。我已经定好了 <add key="ChartImageHandler" value="storage=memory;timeout=20;" /> <handlers> <add name="ChartImg" verb="*" path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.
<add key="ChartImageHandler" value="storage=memory;timeout=20;" />
<handlers>
<add name="ChartImg" verb="*" path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</handlers>
只要在浏览器中使用/host/Poll.aspx路径,一切正常。切换到重写的URL host/poll/时,情况会发生变化。我正在获取System.Web.HttpException未经用户代码处理
Message=执行ChartImg.axd的子请求时出错。例外
有没有办法解决这个问题?多谢各位 我现在还不能尝试这个,但是~/ChartImg.axd怎么样 如果失败,请尝试使用图像位置
<add key="ChartImageHandler" value="Storage=file; Timeout=20; Url=~/Temp/Charting/;"/>
编辑:并更新图表html
<asp:Chart ID="chrt1" runat="server" Width="550px" Height="400px"
SuppressExceptions="True" ImageStorageMode="UseImageLocation"
ImageLocation="~/Temp/Charting/ChartPic_#SEQ(1000,30)">
并确保您要写入的目录存在。我通常在全局的app start上执行此操作我现在实际上无法尝试此操作,但是~/ChartImg.axd如何 如果失败,请尝试使用图像位置
<add key="ChartImageHandler" value="Storage=file; Timeout=20; Url=~/Temp/Charting/;"/>
编辑:并更新图表html
<asp:Chart ID="chrt1" runat="server" Width="550px" Height="400px"
SuppressExceptions="True" ImageStorageMode="UseImageLocation"
ImageLocation="~/Temp/Charting/ChartPic_#SEQ(1000,30)">
并确保您要写入的目录存在。我通常在全局的应用程序启动中执行此操作如果您将网站从.Net 3.0升级到.Net 4.0,并使用IIS 7,则必须在您的网络配置中插入一些行,如下所示:
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<handlers>
<remove name="ChartImageHandler"/>
<add name="ChartImageHandler" preCondition="integratedMode" verb="*" 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>
如果您将网站从.Net 3.0升级到.Net 4.0并使用IIS 7,则必须在网络配置中插入以下行:
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<handlers>
<remove name="ChartImageHandler"/>
<add name="ChartImageHandler" preCondition="integratedMode" verb="*" 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>
不幸的是,这两者似乎都不起作用。仍然得到相同的错误:你能发布你的实际图表html吗?你是说URL吗?实际的aspx文件位于名为Poll.aspx的根目录中。图像的文件夹是~/img/charts/。路由设置为/poll/This works!将StorageMode设置为ImageLocation有效。但是我很担心,这是否会为每个浏览页面的用户生成一张图片?听起来很可怕,不。SEQmaxFiles,分钟-在以1重新启动之前,生成从1到maxFiles的序列号。这可确保存储在指定文件夹中的图表图像文件数不超过maxFiles。minutes参数指定了文件名重新使用之前必须使用的分钟数。不幸的是,这两个参数都不起作用。仍然得到相同的错误:你能发布你的实际图表html吗?你是说URL吗?实际的aspx文件位于名为Poll.aspx的根目录中。图像的文件夹是~/img/charts/。路由设置为/poll/This works!将StorageMode设置为ImageLocation有效。但是我很担心,这是否会为每个浏览页面的用户生成一张图片?听起来很可怕,不。SEQmaxFiles,分钟-在以1重新启动之前,生成从1到maxFiles的序列号。这可确保存储在指定文件夹中的图表图像文件数不超过maxFiles。minutes参数指定文件名重新使用之前必须使用的分钟数。