我可以在我的开发机器上运行该应用程序。 当我将其发布到我的生产机器时,它不起作用。说禁止 .axd 文件。
有什么想法吗?我真的很沮丧!
编辑:
作为测试,我已更改为“storage=file;”。当我向服务器发送生成图表的请求时,图表实际上出现在我的文件夹中 - 它只是不会在请求中发送回浏览器。
阿拉啊!这是怎么回事!?!?!
添加了 web.config
<?xml version="1.0"?>
<configuration>
<appSettings>
<add key="ChartImageHandler" value="storage=memory;"/>
</appSettings>
<connectionStrings>
<add name="VS265178_1ConnectionString" connectionString="Data Source="HIDDEN"/>
</connectionStrings>
<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>
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
</assemblies>
</compilation>
<authentication mode="Forms">
<forms loginUrl="Login.aspx" name=".CFCASPXFORMSAUTH" defaultUrl="Default.aspx"/>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
<machineKey validationKey="HIDDEN" decryptionKey="HIDDEN" validation="SHA1"/>
<!-- Custom Membership Provider Configuration -->
<membership defaultProvider="CFMembershipProvider" userIsOnlineTimeWindow="15">
<providers>
<clear/>
<add name="CFMembershipProvider" passwordFormat="Clear" type="HIDDEN" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" writeExceptionsToEventLog="false"/>
</providers>
</membership>
<profile defaultProvider="CFProfileProvider">
<providers>
<add name="CFProfileProvider" type="HIDDEN"/>
</providers>
</profile>
<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>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<handlers>
<remove name="ChartImageHandler"/>
<add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD" 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>
</configuration>
网站上的 URL 重写由所有子应用程序继承。一种解决方案是将其添加到您的应用程序 web.config 中:
<system.webServer>
<rewrite>
<rules>
<!-- remove parent rewrite rules -->
<clear/>
</rules>
</rewrite>
</system.webServer>
所以答案。
URL 重写是一个杀手。
我在一个 Web 应用程序上安装了 WordPress,该应用程序位于我遇到问题的应用程序之上。 wordpress 安装实际上是在进行重写,因为它不是文件或目录(wordpress 默认),所以它会重写任何没有物理对应文件或文件夹的请求。
如果您遇到随机错误,并且您正在使用子应用程序 - 请查看重写!
我的主机使用 Plesk,当我在 IIS 服务器中加载站点文件时也遇到了这个问题。
将 Web 应用程序防火墙模式更改为仅关闭/检测后,此问题已得到解决。
所以基本上它会通过防火墙规则阻止脚本。并且您需要添加安全规则ID,以允许浏览器在Web应用程序防火墙模式打开的情况下加载脚本文件。