我正在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,正如它在页面底部所说的那样。
答案 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"/>