2017-07-10 2 views
1

Ich versuche C# und VB.Net in meinem Projekt zu mischen. Ich bekomme jedoch einen Fehler. Ich habe diese Codezeilen schon in meine web.config gesteckt, leider bekomme ich immer noch einen Fehler;Mischen von C# und VB.Net in ASP.Net Fehler

<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> 
 

Hier ist der Fehler, ich bin immer;

enter image description here

Ich sehe schon in diese Beiträge, here, here, here und here. Trotzdem bekomme ich einen Fehler. Wie behebe ich das? Vielen Dank.

EDIT Ganze 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>

+0

@LeiYang was meinst du? Kannst du ein Beispiel geben? – Rich

+1

@LeiYang Das ist nicht wahr. Sie können C# und VB in demselben Projekt mischen, vorausgesetzt, es ist nur in den '.aspx'-Dateien (nicht Code-Behind-Dateien) und Sie mischen nicht zwei Sprachen in der gleichen Datei. – Dai

+0

Haben Sie versucht, ein targetFramework zu ändern oder hinzuzufügen? –

Antwort

2

Es gibt ein Duplikat 'system.web.extensions/scripting/scriptResourceHandler 'Abschnitt definiert Nachricht wird angezeigt, wenn Sie versuchen, ein .NET 3.5-Projekt in .NET 4.x-Anwendungspool ausführen, da machine.config von .NET 4.x bereits scriptResourceHandler Abschnitt (Sie ca n in %Windir%\Microsoft.NET\Framework\v4.0.30319\Config\machine.config überprüfen):

<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> 

Auch wenn Sie web.config im selben Verzeichnis wie machine.config sind Überprüfung wird die ScriptResourceHandler bereits dort registriert:

<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, fand ich, dass configSections Element an Projekten .NET 3.5 hat scriptResourceHandler Abschnitt wie folgt aus:

<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 entfernen dupliziert scriptResourceHandler Abschnitt in configSections markiert mit Version 3.5.0.0 oben und versuchen, erneut zu erstellen, oder wenn Sie das Projekt nicht aktualisieren möchten, ändern Sie einfach IIS-Anwendungspool, um stattdessen Version 2.0 zu verwenden.

NB: .NET 3.5 und gefunden, dass sowohl mit C# & VB sind als compiler language="c#;cs;csharp" & compiler language="vb;vbs;visualbasic;vbscript" Ich habe versucht, in VS 2010 ein neues MVC-Projekt von Vorlage zu erstellen.

Referenzen:

MSDN Blog: There is a duplicate scriptResourceHandler section defined

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

+0

Sie haben Recht, ich habe das Tag verdoppelt und es ist bereits registriert, wenn das ist, was es bedeutet. Jetzt geht es. Vielen Dank! – Rich

0

Achten Sie auf Ihre Fehlermeldung. Sie können C# und VB im selben Projekt laufen:

enter image description here

Da die Fehlermeldung besagt:

Es ist ein Duplikat 'system.web.extensions/scripting/scriptResourceHandler' Abschnitt definiert. Das Problem ist, weil Ihr sind eine .net 3.5-basierte Anwendung in Net 4,0

Der Grund laufen Sie den Fehler haben wird Ihre volle web.config, die ich angefordert Sie in vollem Umfang zu veröffentlichen, hat Abschnitt Definitionen, die bereits enthalten sind im Stamm web.config in .NET 4.0 Standard .config (siehe% windir% \ microsoft.net \ Framework \ v4.0.30319 \ config \ machine.config)

+0

Ich weiß nicht, was es bedeutet in _The Problem ist, weil Sie eine .NET 3.5-basierte Anwendung in Net 4.0_ noch laufen, ich benutze 4.6.1 Framework. Führe das ** duplizieren ** aus, dass ich eine Verdoppelung des Tags oder etwas ähnliches habe? – Rich