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参数指定文件名重新使用之前必须使用的分钟数。