ASP.Net图的虚假路径名

时间:2015-05-27 12:49:04

标签: asp.net vb.net

我正在ASP.Net应用程序中生成图表。为此,我将图表控件包含在ASPX文件中,如下所示: -

<asp:Chart ID="ourChart"
           runat="server"
           Height="500px"
           width="520px"
           BackColor="Black"
           ImageLocation="~/GraphTempFiles/ChartPic_#SEQ(300,3)"
           ImageStorageMode="UseImageLocation"
           ImageType="Bmp">

并添加了我认为是web.config的必备功能: -

<system.webServer>
  <validation validateIntegratedModeConfiguration="false"/>
  <modules runAllManagedModulesForAllRequests="true"/>
  <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>
</system.webServer>
<appSettings>
  <add key="ChartImageHandler"   
       value="storage=file;timeout=20;Url=~/GraphTempFiles;" />
</appSettings>

所有这一切的结果是页面在应用程序中显示服务器错误: -

  

无法找到路径的一部分   '\ MyDisk \ mydirectory中\ MyProgram \(S(32rdrd5zxhvc3rhq2szdxv2w))\ GraphTempFiles \ ChartPic_000001.bmp'。

有谁知道这件事是什么? (据推测,我不应该在任何时候创建目录(S(32rdrd5zxhvc3rhq2szdxv2w));括号中的数字每次运行时都会有所不同。)

我在Windows 8.1上使用Visual Studio 2013,使用Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.0.30319.34248,正如它在页面底部所说的那样。

1 个答案:

答案 0 :(得分:1)

很可能发生此错误,因为在web.config文件中启用了ASP.NET Cookieless功能,如下所示:

<sessionState mode="InProc" cookieless="UseUri" timeout="60" />

根据Understand How the ASP.NET Cookieless Feature Works

  

UseUri:将始终使用无Cookie功能。

在这种情况下,Url可能如下所示:http://mysite/MyWebApp/(S(XXXX))/home.aspx

至少有两种选择可以解决它:

选项1 ,禁用无Cookie功能,例如,使用sessionState元素的默认设置:

<sessionState mode="InProc" customProvider="DefaultSessionProvider">
  <providers>
    <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection"/>
  </providers>
</sessionState>

选项2 ,为ImageLocation控件的Chart属性指定相对物理路径,例如:

<asp:Chart ID="ourChart"
               runat="server"
               Height="500px"
               width="520px"
               BackColor="Black"
               ImageLocation="GraphTempFiles/ChartPic_#SEQ(300,3)"
               ImageStorageMode="UseImageLocation"
               ImageType="Bmp"/>