การปรับใช้ IIS7 - ส่วน 'system.web.extensions / scripting / scriptResourceHandler ที่ซ้ำกัน'


209

ในการพยายามปรับใช้เว็บไซต์. net 3.5 บนแอพพูลเริ่มต้นใน IIS7 โดยมีส่วนเฟรมเวิร์กตั้งเป็น 4.0 ฉันได้รับข้อผิดพลาดต่อไปนี้

มีการกำหนดซ้ำ 'system.web.extensions / scripting / scriptResourceHandler' ส่วน

การแสดงความคิดเห็นต่อบรรทัดที่กระทำผิดนั้นไม่ได้ช่วยอะไรเช่นกัน พอยน์เตอร์ใด ๆ ในสิ่งที่ฉันต้องทำหรือดู?

คำตอบ:


338

หากแผนของคุณคือการปรับใช้กับ IIS ที่มี Application Pool ทำงานอยู่ใน. net 4.0 คุณจะต้องล้างข้อมูล web.config ที่มีคำจำกัดความของส่วนทั้งหมดที่ชี้ไปที่. net 3.5 เหตุผลนี้ล้มเหลวเนื่องจากคำจำกัดความของส่วนเหล่านี้รวมอยู่ใน root web.config แล้วใน. NET 4.0 (ดู% windir% \ microsoft.net \ framework \ v4.0.30319 \ config \ machine.config) ซึ่งรวมถึงระบบทั้งหมด web.extensions ประกาศแล้ว

การแก้ไขด่วนอื่นก็คือให้ตั้งกลุ่มแอพพลิเคชั่นเป็น 2.0 เหมือนกับที่เครื่องพัฒนาของคุณมี


ขอบคุณ ฉันคิดว่าวิธีแก้ปัญหานี้จริง ๆ หลังจาก tinkering รอบ ๆ เพิ่มเติม ..
user20358

3
ขอบคุณที่อธิบายเรื่องนี้ ฉันยังคงเห็นวิธีแก้ปัญหาเพื่อลบส่วนออกจากไฟล์กำหนดค่าและฉันสงสัยว่า "วิธีแก้ปัญหาส่วนกำหนดค่าของไฟล์โซลูชันของคุณ" เป็นอย่างไร
Adam Bruss

13
สระว่ายน้ำของฉันตั้งค่าเป็น 4.0 แทน 2.0!
RolandoCC

1
มันง่ายมากที่จะเปลี่ยนไซต์เก่านี้เป็นแอพพูล 2.0 และมันใช้งานได้ดี! ขอบคุณ!
mgrenier

1
เพียงแค่ลบส่วน. net 3.5 ใน web.config ทำงานให้ฉัน
Anand

49

ทางออกสำหรับฉันคือการเปลี่ยนเวอร์ชั่น. NET Framework ใน Application Pools จาก v4.0 เป็น v2.0 สำหรับกลุ่มแอพเริ่มต้น:

ป้อนคำอธิบายรูปภาพที่นี่


13
aaaand ถ้าคุณใช้. NET 4.0 ในแอปพลิเคชั่นจริง ๆ ?
Michael Paulukonis

3
@MichaelPaulukonis ฉันมีปัญหานี้ปรากฏว่ามี web.config ในเว็บไซต์รูทที่เว็บไซต์ของฉันสืบทอดมา
guanome

@MichaelPaulukonis, pfft แบบนั้นจะเกิดขึ้น!
DaveDev

ฉันมีปัญหานี้เมื่อแอปของฉันได้รับการอัปเกรดจาก 3.5 เป็น 4.0 กลุ่มแอพได้รับการอัปเดตอย่างถูกต้อง แต่ web.config ล้าสมัยแล้ว Web.config พยายามที่จะเพิ่มกลุ่มส่วนเหล่านั้นทั้งหมดที่ตั้งแต่ 4.0 เป็นเนทิฟและไม่จำเป็นต้องเพิ่มอย่างชัดเจน
drizin

48

ถ้าเช่นฉันคุณจะต้อง v4 เป้าหมาย แต่สามารถสร้างด้วยสุทธิ 3.5, ทำตามคำสั่งที่นี่ เพียงแทนที่ในเว็บของคุณกำหนดค่าเนื้อหาทั้งหมดของ<configSections>ด้วย:

<configSections>
<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">
    <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 name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions,  Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
      <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="Everywhere"/>
      <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
      <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
      <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
    </sectionGroup>
  </sectionGroup>
</sectionGroup>


3
ของคุณเป็นทางออกเดียวที่แก้ไขข้อผิดพลาดของฉัน! ขอบคุณมาก!
Devdatta Tengshe

1
นี่เป็นการแก้ไขปัญหาของฉันด้วย เซิร์ฟเวอร์ได้รับการอัพเกรด IIS6 เป็น IIS7.5 ใน IIS6 มันทำงานภายใต้ v4.0 แต่ IIS7.5 ต้องการการเปลี่ยนแปลง web.config นี้
johna

นี่มันสุดยอดมาก
mzonerz

ค่าใน PublicKeyToken คำนึงถึงขนาดตัวพิมพ์ (และควรดูเหมือนในคำตอบ) ฉันมีตัวพิมพ์ใหญ่และมันใช้ไม่ได้
Björn

3

El problema เป็น porque el pool por defecto en. net 4.0 การแก้ปัญหา: เข้าสู่เซิร์ฟเวอร์ Administrador IIS lado derecho establecer valores de grupos de aplicaciones! [ใส่คำอธิบายภาพที่นี่] [1] y cambiar la vercion del framework! ที่นี่] [2]

ในส่วนของการแก้ไขปัญหาและการกำหนดค่ากลาง SharePoint 2010

----- ผ่าน Google Translate -----

ปัญหาเกิดขึ้นเนื่องจากพูลเป็นค่าเริ่มต้น โซลูชัน Net 4.0: ป้อนเซิร์ฟเวอร์ IIS Manager เพื่อตั้งค่าทางด้านขวาของแอพพลิเคชั่นพูล! [ใส่คำอธิบายภาพที่นี่] [1] และเปลี่ยนเวอร์ชั่นของเฟรม! [ใส่คำอธิบายรูปภาพที่นี่] [2]

สิ่งนี้ควรแก้ปัญหาการติดตั้ง SharePoint Central Administration 2010


22
ยินดีต้อนรับสู่ StackOverflow! หากคุณไม่ได้มีความรู้ภาษาอังกฤษเพียงพอโปรดเรียกใช้คำตอบของคุณผ่านGoogle Translate ชุมชนจะปรับปรุงวลีแปลก ๆ โดยการแก้ไข ขอบคุณสำหรับคำตอบ. ||||| ผ่าน Google Translate ||||| Bienvenido เป็น StackOverflow! ศรี usted ไม่มี Tiene dominio เดInglés suficiente โปรดปราน por, ejecute Traves de Sus respuestas Google Translate La comunidad mejorará frases extrañas en la edición Gracias por su respuesta
Andrew Kozak


3

Necromancing
หากคุณไม่มีรายการ system.web.extensions config-section หรือตัวจัดการ / โมดูลใน web.config ของคุณปัญหานี้เกิดขึ้นเนื่องจากคุณ / คนอื่นคัดลอก VisualStudio-Project (2013/2015/2017) ขณะที่ซ่อนอยู่ -Files unhidden

ด้วยเหตุนี้จึงไม่เพียง แต่คัดลอก. git เท่านั้น แต่ยัง.VSมีไฟล์application -IIS applicationhost.config ซึ่งชี้ไปที่ไฟล์ web.config ที่พา ธ ที่ไม่มีอยู่ (หรือแย่กว่านั้นคือพา ธ ที่มีอยู่จริง แต่ ไม่มีเนื้อหาเดียวกัน) ...

การแก้ไข:
ลบไฟล์ applicationhost.config ในโฟลเดอร์. VS
หรือเพียงแค่ลบโฟลเดอร์. VS ทั้งหมด
Visual Studio จะสร้างใหม่อีกครั้ง


คำอธิบายที่ยอดเยี่ยม
วิลเลียมเบล

2

แอพของฉันเป็นแอพ ASP.Net3.5 (ใช้เฟรมเวิร์กเวอร์ชัน 2) เมื่อแอป ASP.Net3.5 ได้สร้าง Visual Studio เพิ่ม scriptResourceHandler ให้กับ web.config โดยอัตโนมัติ . Net เวอร์ชันที่ใหม่กว่าใส่สิ่งนี้ลงใน machine.config หากคุณเรียกใช้แอพ ASP.Net 3.5 โดยใช้แอพเวอร์ชัน 4 (ขึ้นอยู่กับลำดับการติดตั้งซึ่งเป็นแอพเริ่มต้น) คุณจะได้รับข้อผิดพลาดนี้

เมื่อฉันย้ายไปใช้แอพพูลเวอร์ชัน 2.0 ข้อผิดพลาดหายไป ฉันต้องจัดการกับข้อผิดพลาดเมื่อให้บริการ WCF .svc:

HTTP Error 404.17 - ไม่พบเนื้อหาที่ร้องขอดูเหมือนจะเป็นสคริปต์และจะไม่ได้รับการจัดการโดยตัวจัดการไฟล์แบบคงที่

หลังจากการตรวจสอบบางอย่างดูเหมือนว่าฉันต้องการที่จะลงทะเบียนจัดการ WCF ใช้ขั้นตอนต่อไปนี้:

  1. เปิดพรอมต์คำสั่ง Visual Studio (ในฐานะผู้ดูแลระบบ)
  2. นำทางไปยัง "รากฐานการสื่อสาร C: \ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows"
  3. เรียกใช้ servicemodelreg -i


1

ในกรณีของฉันมันเกิดขึ้นหลังจากฉันแปลงโซลูชันทั้งหมด (โดยใช้ส่วนขยายที่เรียกว่า Target Framework Migrator) เป็น 4.6.2 แต่จบลงด้วยการเลิกทำการเปลี่ยนแปลงและย้อนกลับไปที่ 3.5 (โซลูชันเป็นเวอร์ชั่นของ TFS) เพื่อแก้ปัญหานี้ฉันแปลงโครงการที่มีปัญหา (ซึ่งใช้ IIS Express เพื่อเรียกใช้) เป็น 4.6.2 แล้วกลับไปเป็น 3.5


ขอบคุณ ดูเหมือนว่าการคืนค่ากลับและยกเลิกการเปลี่ยนแปลงจะทำให้แอปเข้าสู่สถานะ. NET 3.5 อย่างถูกต้อง
Iman

0

อีกวิธีหนึ่งในการหลีกเลี่ยงปัญหานี้ที่อาจช่วยให้ผู้อื่นสามารถสร้างบริการเว็บ. net เป็นเวอร์ชัน 4.0 หรือสูงกว่าถ้าเป็นไปได้


0

ในกรณีของฉันฉันมี 2 แอพที่ต่างกันซึ่งแชร์แอพเดียวกัน อันแรกคือใช้. net4.5 framwork และอันใหม่ใช้ 2.0 เมื่อฉันเปลี่ยนแอพที่สองเป็นแอพของตัวเองมันเริ่มทำงานได้ดีโดยไม่ต้องเปลี่ยนเว็บ


0

ความละเอียดของฉันช่างโง่

  • ฉันติดตั้งสำเนา. net 3.5

  • สร้างพูลแอพอื่นและเลือก. net 3.5 (ระบุว่า 2.0.5077 ในเมนูแบบเลื่อนลง)

  • เพิ่มเว็บไซต์ของฉันลงในกลุ่มแอพนั้น

  • รีไซเคิลพูลเก่าและใหม่และไซต์เริ่มทำงาน

มันลงมาให้ฉันโดยที่ไม่ได้ติดตั้ง 3.5 แม้ว่าคุณสมบัติการเปิดใช้ Windows จะบอกว่าฉันทำและสร้างแอพพลิเคชั่นอื่นให้ใช้งาน ฉันหวังว่านี่จะช่วยผู้อื่น


0

ในกรณีของฉันฉันต้องการเพิ่มกฎ urlrewrite ด้วยตนเองและไม่เห็นข้อผิดพลาดที่ชัดเจน (ฉันพลาด<rules>แท็ก):

รหัสผิด:

    <rewrite>
      <rule name="some rule" stopProcessing="true">
        <match url="some-pattenr/(.*)" />        
        <action type="Redirect" url="/some-ne-pattenr/{R:1}" />
      </rule>
    </rewrite>    

  </system.webServer>
</configuration>

รหัสที่ถูกต้อง (พร้อมแท็กกฎ):

    <rewrite>
      <rules>
        <rule name="some rule" stopProcessing="true">
          <match url="some-pattenr/(.*)" />        
          <action type="Redirect" url="/some-ne-pattenr/{R:1}" />
        </rule>
      </rules>
    </rewrite>

  </system.webServer>
</configuration>

0

ฉันแก้ไขมันแล้วโดยทำตามขั้นตอนต่อไปนี้:

  1. ฉันสร้างกลุ่มแอปพลิเคชันใหม่ใน IIS
  2. เปิดการตั้งค่าขั้นสูงสำหรับไซต์หรือเว็บแอปพลิเคชันที่มีปัญหานี้
  3. และตั้งกลุ่มแอพพลิเคชั่นใหม่

ที่นี่คุณมีภาพของขั้นตอนเหล่านี้:

สร้างกลุ่มแอปพลิเคชันใหม่

หลังจากคุณสร้างกลุ่มแอปพลิเคชัน

ตั้งกลุ่มแอปพลิเคชันในเว็บไซต์หรือเว็บแอปของคุณ


0

ข้อความแสดงข้อผิดพลาดนี้เกิดขึ้นในหลายสถานการณ์

ในกรณีของฉันด้านบนของไฟล์ Web.Config ของแอปพลิเคชันของฉันฉันมีไฟล์ Web.Config พิเศษในโฟลเดอร์รูท (C: \ Inetpub \ www.root) อาจเหลือหลังจากการทดสอบบางอย่างฉันลืมไปหมดแล้วและไม่รู้ว่าปัญหาคืออะไร

การลบการแก้ไขปัญหาสำหรับฉัน


0

นี่อาจเป็นคำตอบที่ผิดสำหรับคุณ แต่นี่เป็นครั้งแรกใน Google เมื่อฉันพยายามที่จะแก้ปัญหาของฉัน ด้วยที่กล่าวว่า ...

เกิดข้อผิดพลาดเดียวกันสำหรับฉันเช่นกัน แต่เมื่อฉันพยายามเรียกใช้ IIS Express ผ่าน Visual Studio

ปัญหาของฉันคือฉันตั้งใจผิดพลาดapplicationhost.configของฉันไปที่ TFS ต่อมาเมื่อฉันพยายามเรียกใช้โครงการบนแล็ปท็อปของฉันหลังจากได้รับภาระล่าสุด นั่นคือเมื่อเกิดข้อผิดพลาด

ฉันพบว่าเส้นทางไดเรกทอรีเสมือนผิด

<virtualDirectory path="/" physicalPath="C:\Users\giddan\Documents\Visual Studio 2015\Projects\ProjectName\DeV.ProjectName\DeV.ProjectName.Web" />

หวังว่านี่จะช่วยใครซักคน!

นี่คือโพสต์แรกของฉันดังนั้นโปรดอ่อนโยน :)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.