none
Chart control и интегрированный режим конвейера RRS feed

  • Вопрос

  • Здравсвуйте. В IIS использую интегрированный конвейер. Добавил на форму пару контролов Chart, получаю такую ошибку:

    Ошибка HTTP 500.23 - Internal Server Error
    Обнаружены значения параметров ASP.NET, которые неприменимы в интегрированном режиме управляемого конвейера.

    В настройках проекта, на вкладке web укзан сервер http://localhost   Содержимое вебконфига:

    <configuration>
    	<appSettings>
      <add key="ChartImageHandler" value="storage=file;timeout=20;dir=c:\TempImageFiles\;" />
     </appSettings>
     <system.webServer>
      <handlers>
       <remove name="ChartImageHandler" />
       <add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD,POST"
        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>
     <connectionStrings>
    		<add name="OprosConnectionString" connectionString="Data Source=XVOST\SQLEXPRESS;Initial Catalog=Opros;Integrated Security=true; User ID=Oprosadm;Password=oprosadm" providerName="System.Data.SqlClient"/>
    	</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>
      <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>
      <authentication mode="Forms">
    			<forms loginUrl="Login.aspx" timeout="30">
    				<credentials passwordFormat="Clear">
    					<user name="admin" password="qweqwe"/>
    				</credentials>
    			</forms>
    		</authentication>
    		<compilation debug="true" targetFramework="4.0">
    			<assemblies>
    				<add assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></assemblies></compilation>
    	</system.web>
    	<location path="admin">
    		<system.web>
    			<authorization>
    				<deny users="?"/>
    				<allow users="*"/>
    			</authorization>
    		</system.web>
    	</location>
    </configuration>

    24 января 2013 г. 10:08

Ответы

  • У Вас сейчас какой сервер IIS или Development? Если IIS, то надо указывать <handlers> вместо <httpHandlers>.
    • Помечено в качестве ответа Boguyang 26 января 2013 г. 7:42
    24 января 2013 г. 11:19
    Модератор
  • У Вас конфигурационный файл окончательно испортился. Не нужно переименовывать system.web на system.webServer, оба раздела должны находиться на одном и том же уровне, рядышком. Вот пример правильной конфигурации,

    <handlers>
        <remove name="ChartImageHandler" />
        <add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD,POST"
        path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler,
        System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    </handlers>

    Вам нужно добавить только обработчик в свой файл конфигурации и ничего больше.

    • Изменено YatajgaEditor 25 января 2013 г. 6:18
    • Помечено в качестве ответа Boguyang 26 января 2013 г. 7:42
    25 января 2013 г. 6:17
    Модератор

Все ответы

  • У Вас сейчас какой сервер IIS или Development? Если IIS, то надо указывать <handlers> вместо <httpHandlers>.
    • Помечено в качестве ответа Boguyang 26 января 2013 г. 7:42
    24 января 2013 г. 11:19
    Модератор
  • Сейчас используется IIS. Поменял <httpHandlers> на <handlers>. Затем пришлось менять system.web на system.webServer. В итоге получил ошибку:Ошибка HTTP 500.19 - Internal Server Error
    Запрашиваемая страница не доступна из-за неверной конфигурации данных для этой страницы.

    Сейчас вот такой вебконфиг:

    <configuration>
      <appSettings>
        <add key="ChartImageHandler" value="storage=file;timeout=20;dir=c:\TempImageFiles\;" />
      </appSettings>
      <system.webServer>
        <handlers>
          <remove name="ChartImageHandler" />
          <add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD,POST"
           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>
      <connectionStrings>
        <add name="OprosConnectionString" connectionString="Data Source=XVOST\SQLEXPRESS;Initial Catalog=Opros;Integrated Security=true; User ID=Oprosadm;Password=oprosadm" providerName="System.Data.SqlClient"/>
      </connectionStrings>
      <system.webServer>
        <handlers>
          <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" />
        </handlers>
        <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>
        <authentication mode="Forms">
          <forms loginUrl="Login.aspx" timeout="30">
            <credentials passwordFormat="Clear">
              <user name="admin" password="qweqwe"/>
            </credentials>
          </forms>
        </authentication>
        <compilation debug="true" targetFramework="4.0">
          <assemblies>
            <add assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
          </assemblies>
        </compilation>
      </system.webServer>
      <location path="admin">
        <system.web>
          <authorization>
            <deny users="?"/>
            <allow users="*"/>
          </authorization>
        </system.web>
      </location>
    </configuration>

    24 января 2013 г. 14:42
  • У Вас конфигурационный файл окончательно испортился. Не нужно переименовывать system.web на system.webServer, оба раздела должны находиться на одном и том же уровне, рядышком. Вот пример правильной конфигурации,

    <handlers>
        <remove name="ChartImageHandler" />
        <add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD,POST"
        path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler,
        System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    </handlers>

    Вам нужно добавить только обработчик в свой файл конфигурации и ничего больше.

    • Изменено YatajgaEditor 25 января 2013 г. 6:18
    • Помечено в качестве ответа Boguyang 26 января 2013 г. 7:42
    25 января 2013 г. 6:17
    Модератор
  • То есть в конфигурационном файле просто исключить блок HttpHandlers? Просто закомментил блок httphandlers в вебконфиге:

    <configuration>
    	<appSettings>
      <add key="ChartImageHandler" value="storage=file;timeout=20;dir=c:\Temp\;" />
     </appSettings>
     <system.webServer>
      <handlers>
       <remove name="ChartImageHandler" />
       <add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD,POST"
        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>
     <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>-->
      <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>
      <compilation debug="true" targetFramework="4.0">
    			<assemblies>
    				<add assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></assemblies></compilation>
    	</system.web>
    </configuration>
    Всё заработало, и при публикации на IIS ошибок нет, график отображается. Это и есть правильное решение проблемы?

    25 января 2013 г. 15:59
  • Да, это решение. Блоки с префиксом http типа HttpHandlers предназначены для конфигурации классического режима, а для интегрированного предназначены handlers.
    26 января 2013 г. 7:18
    Модератор
  • Спасибо! Теперь понял.
    26 января 2013 г. 7:42