1

I'm trying to mix C# and VB.Net in my project. However I'm getting an error. I already put this lines of codes in my web.config unfortunately still I'm getting an error;

<compilation debug="true">
    <codeSubDirectories>
      <add directoryName="VB" />
      <add directoryName="CSharp" />
    </codeSubDirectories>
  </compilation>
  
<system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs"
                type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/>
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"
                type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+"/>
    </compilers>
</system.codedom>
  

Here's the error that I'm getting;

enter image description here

I already look into these posts, here, here, here, and here. But still I'm getting an error. How to fix this? Thank you.

EDIT Whole web.config

<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.6.1">
      <codeSubDirectories>
        <add directoryName="VB" />
        <add directoryName="CSharp" />
      </codeSubDirectories>
    </compilation>
    <httpRuntime targetFramework="4.6.1"/>
    <httpModules>
      <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web"/>
    </httpModules>
  </system.web>
  <system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs"
        type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/>
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"
        type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+"/>
    </compilers>
  </system.codedom>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules>
      <remove name="ApplicationInsightsWebTracking"/>
      <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web"
        preCondition="managedHandler"/>
    </modules>
  </system.webServer>
</configuration>

8
  • @LeiYang what do you mean? can you give an example? Commented Jul 10, 2017 at 2:31
  • 1
    @LeiYang This is not true. You can mix C# and VB in the same project provided it's only in the .aspx files (not code-behind files) and you don't mix two languages in the same file. Commented Jul 10, 2017 at 2:31
  • Have you tried changing or adding a targetFramework? Commented Jul 10, 2017 at 2:37
  • @WillyDavidJr Yes, I already tried that too. Commented Jul 10, 2017 at 2:38
  • @LeiYang Not true. You can have both in the same project. Joshua please post your entire web.config. You have an error somewhere else most likely not related to mixing languages. Commented Jul 10, 2017 at 2:42

2 Answers 2

2

There is a duplicate 'system.web.extensions/scripting/scriptResourceHandler' section defined message will appear if you're trying to run a .NET 3.5 project in .NET 4.x application pool, since machine.config of .NET 4.x already has scriptResourceHandler section (you can check in %Windir%\Microsoft.NET\Framework\v4.0.30319\Config\machine.config):

<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
    <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">

        <!-- this section causing duplicate error for .NET 3.5 projects -->
        <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
        ...
    </sectionGroup>
</sectionGroup>

Also if you're checking web.config in the same directory as machine.config, the ScriptResourceHandler is already registered there:

<httpHandlers>
    ...

    <!-- this handler is already registered in .NET 4.x default web.config -->
    <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="False"/>

    ...
</httpHandlers>

FYI, I found that configSections element on .NET 3.5 projects has scriptResourceHandler section like this:

<configSections>
    <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
        <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
        <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
          <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere" />
          <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
          <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
          <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
        </sectionGroup>
      </sectionGroup>
   </sectionGroup>
</configSections>

Try remove duplicated scriptResourceHandler section in configSections marked with version 3.5.0.0 above and try to build again, or if you don't want to upgrade the project just change IIS application pool to use version 2.0 instead.

NB: I tried to create a new MVC project from template in VS 2010 using .NET 3.5 and found that both C# & VB are available as compiler language="c#;cs;csharp" & compiler language="vb;vbs;visualbasic;vbscript".

References:

MSDN Blog: There is a duplicate scriptResourceHandler section defined

IIS7 deployment - duplicate 'system.web.extensions/scripting/scriptResourceHandler' section

Sign up to request clarification or add additional context in comments.

1 Comment

You're right, I doubled the <compilation> tag and its already registered if that's what it means. Now, it's working. Thank you!
0

Pay attention to your error message. You can run C# and VB in the same project:

enter image description here

As the error message states:

There is a duplicate 'system.web.extensions/scripting/scriptResourceHandler' section defined. The issue is because your are running a .net 3.5-based application in Net 4.0

The reason you are having the error is your full web.config, which I requested you post in full, has section definitions that are already included in the root web.config in .NET 4.0 default .config (see %windir%\microsoft.net\framework\v4.0.30319\config\machine.config)

1 Comment

I don't know what it means in The issue is because your are running a .net 3.5-based application in Net 4.0 yet, I'm using 4.6.1 framework. Do the duplicate saying I have a duplication of tag or something?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.