แอตทริบิวต์ 'targetFramework' ที่ไม่รู้จัก โปรดทราบว่าชื่อแอตทริบิวต์เป็นกรณี ๆ ไป


416

ฉันกำลังพยายามโหลดเว็บไซต์ของฉันและฉันได้รับข้อความแสดงข้อผิดพลาดนี้:

แอตทริบิวต์ 'targetFramework' ที่ไม่รู้จัก โปรดทราบว่าชื่อแอตทริบิวต์เป็นกรณี ๆ ไป

<compilation debug="true" targetFramework="4.0">

ไซต์ทำงานได้ดีบนพีซีในพื้นที่ของฉัน แต่จะไม่เปิดเมื่อฉันโหลดไปยังโฮสต์ของฉันและพยายามที่จะดูออนไลน์


มันไม่แสดงไฟล์ที่มีหรือที่?
Jon Skeet

2
มันถูกสร้างขึ้นก่อนหน้านี้ในกรอบ 4.0 ล่วงหน้าหรือไม่ elegantcode.com/2009/11/10/…
Ta01

ปัญหานี้อาจแก้ไขได้ภายใน 4.0.3 คุณสามารถตรวจสอบบทความ KB ที่นี่ @ ฉันและแจ้งให้เราทราบหากสิ่งนี้ช่วยแก้ไขปัญหาของคุณฉันอาจลองรับคำถาม / คำตอบที่เป็นที่ยอมรับสำหรับข้อผิดพลาดนี้และปิด dupe ขอบคุณ

เมื่อฉันพยายามติดตั้ง KB2599651 (ดาวน์โหลด 64- บิต) บน Win 7 x64 ฉันได้รับข้อความแสดงข้อผิดพลาดว่า "ใช้ไม่ได้หรือถูกบล็อกโดยเงื่อนไขอื่นในคอมพิวเตอร์ของคุณ" ฉันมีข้อผิดพลาดเหมือนกับ OP มีการติดตั้ง Framework 4.0 และลงทะเบียนกับ IIS และได้เลือกเป็น Application Pool
ทิม

คุณเปิดใน Visual Studio เวอร์ชันที่เก่ากว่าโครงการที่ได้รับการพัฒนาหรือไม่? หรือมันถูกพัฒนาใน Webmatrix แล้วเปิดในสตูดิโอภาพที่เก่ากว่า
ruffrey

คำตอบ:


610

สิ่งนี้มักจะเกิดขึ้นเมื่อคุณมีคุณสมบัติtargetFramework="4.0"ใน web.config แต่ App Pool ถูกตั้งค่าให้เรียกใช้ ASP.NET 2.0 targetFrameworkแอตทริบิวต์ที่ไม่รู้จักโดยสิ้นเชิง ASP.NET 2.0 - เพื่อเปลี่ยนไป 2.0 จะไม่ได้มีผลที่ต้องการ

ติดต่อฝ่ายสนับสนุน / ผู้ดูแลระบบของคุณและให้ AppPool เปลี่ยนเป็น 4.0

คุณสามารถลบแอททริบิวต์ออกไปได้อย่างสิ้นเชิงอย่างไรก็ตามหากเว็บไซต์ของคุณถูกเข้ารหัสด้วย 4.0 Framework ฉันก็มั่นใจว่าจะมีข้อผิดพลาดเกิดขึ้นเช่นกัน


20
ขอบคุณวิธีนี้แก้ปัญหาได้ให้ตรวจสอบลิงก์นี้เพื่อดูคำแนะนำทีละขั้นตอนเพื่อให้ AppPool เปลี่ยนเป็น 4.0: stackoverflow.com/questions/4890245/…
user1010572

Thanks @ vcsjones .. เว็บไซต์ my ตอนนี้เปิดใช้งานแล้วเพราะคุณ .. :)
Shiva Pareek

เพียงเพิ่มเพื่อแก้ปัญหา @vcsjones ที่ลงทะเบียน. net 4.0 ก็อาจจะพลาด คุณสามารถลงทะเบียน. net 4.0 ได้โดยใช้ขั้นตอนในลิงค์นี้จากนั้นคุณต้องติดกลุ่มแอพพลิเคชั่นเป็น 4.0
ราม

4
เมื่อฉันไปที่ข้อความแสดงข้อผิดพลาดฉันพบหน้านี้พร้อมกับคำถามที่สวยงามนี้และแม้กระทั่งคำตอบที่สวยงามยิ่งขึ้นซึ่งฉันได้ประกาศขึ้นเมื่อหลายเดือนก่อน
Memet Olsen

81

การลงทะเบียนเฟรมเวิร์กกับ IIS เป็นสิ่งที่ใช้ได้ผลสำหรับฉัน:

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319>aspnet_regiis -i

7
มันใช้งานได้! สำหรับ 64 บิตอยู่ภายใต้ C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319
Jerry Liang

1
ผมเคยมีปัญหาเดียวกัน แต่ regiis ไม่ได้แก้ไขได้ - ฉันมีจะลดลงและสร้างต้นไม้ทั้งเว็บไซต์และมอบหมายสระว่ายน้ำสำหรับแต่ละ app และตอนนี้ก็ทำงาน ...
veljkoz

1
หากนี่เป็น IIS เวอร์ชันใหม่ (ไม่มีไซต์อื่นที่ทำงานอยู่) หรือคุณไม่กังวลเกี่ยวกับไซต์ที่โฮสต์ซึ่งมีการเปลี่ยนแปลงเฟรมเวิร์กคุณสามารถใช้ -i แทน -ir ในขณะที่ทำการลงทะเบียน
Ram

43

เปิด IIS ของคุณ (พิมพ์ inetmgr ทำงาน) และเปลี่ยนการตั้งค่ากลุ่มแอปพลิเคชันของคุณเพื่อดูภาพขนาดใหญ่นี้คลิกขวาที่ภาพและเปิดภาพในแท็บใหม่ ป้อนคำอธิบายรูปภาพที่นี่


43

ใน IIS

คลิกที่ Application Pools

คลิกขวาที่ DefaultAppPool --- >> ตั้งค่า Application Pool Default ....--- >> เปลี่ยน. Net Version เป็น V 4.0


26

ในเมนู Visual Studio:

เว็บไซต์ -> ตัวเลือกเริ่ม -> สร้างแท็บ -> เลือกกรอบงานเป้าหมายในกล่องดรอปดาวน์ (.NET FrameWork 4)


หรือ 4.5 ในกรณีของฉัน :)
230910

เกิดอะไรขึ้นถ้าเซิร์ฟเวอร์มีเพียง 2.0 จำเป็นต้องติดตั้ง 4.0 / 4.5 ??
Juran

@ user230910 ตัวเลือกนั้นอยู่ที่ไหน
DiegoS

ฉันจำไม่ได้อย่างชัดเจน แต่ฉันคิดว่านี่หมายถึง IIS
user230910

ทำงานได้สมบูรณ์แบบสำหรับฉันพฤษภาคม 2019 โดยใช้ Visual Studio 2019 แอปฟอร์มเว็บบน AWS EC2 Windows Server 2019
Doug Null

12

ฉันกำลังเผชิญปัญหาเดียวกันในขณะที่เผยแพร่บริการเว็บ 1'st ของฉัน ฉันแก้ไขมันด้วยการทำสิ่งนี้:

  1. เปิด IIS

  2. คลิกที่ Application Pools

  3. คลิกขวาที่ DefaultAppPool => ตั้งค่า Application Pool Default => เปลี่ยน. Net Version เป็น V 4.0 (คุณสามารถเปลี่ยน. Net Framework Version ของแอปพลิเคชันของคุณโดยเฉพาะ)

หวังว่ามันจะทำงาน


9

สำหรับ IIS 7 ลองตามภาพที่กำหนด ... ทำเครื่องหมายฉันว่าเป็นประโยชน์ถ้ามันเหมาะกับคุณ

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


8

ฉันต้องลงทะเบียน ASP.Net ใน IIS เพื่อให้ได้รับการแก้ไขใน Windows Server 2008 R2 ภาพหน้าจอของคำสั่งที่แนบมาด้านล่าง

cd /d C:\Windows\Microsoft.NET\Framework\v4.0.30319

iisreset /stop

aspnet_regiis -i

iisreset /start

%systemroot%\system32\inetsrv\appcmd set config /section:isapiCgiRestriction /[path='%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll'].allowed:True 

%systemroot%\system32\inetsrv\appcmd set config /section:isapiCgiRestriction /[path='%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll'].allowed:True 

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


5

เปลี่ยนพูลแอ็พพลิเคชันเป็นเป้าหมาย Framework 4.0 แทนที่จะเป็น classic

  1. เว็บไซต์ RC -> จัดการเว็บไซต์ -> การตั้งค่าขั้นสูง>
  2. ตัวเลือกแรกเปลี่ยนจากแบบคลาสสิคเป็นเฟรมเวิร์ค 4

5

ฉันใช้ IIS Express มากกว่า IIS

ปัญหาอยู่ในไฟล์ applicationhost.config ซึ่งอยู่ใน: {solution_folder} \. vs \ config \ applicationhost.config

หนึ่งในรายการกลุ่มแอปพลิเคชันมีค่า managedRuntimeVersion ของ "v2.0" ฉันเปลี่ยนเป็น "v4.0" และทำงานได้อย่างถูกต้อง

ฉันค่อนข้างแน่ใจว่าสาเหตุที่แท้จริงเป็นหนึ่งในแพ็คเกจ NuGet ที่ฉันติดตั้งเมื่อเร็ว ๆ นี้

    <system.applicationHost>
       <applicationPools>
          <add name="BadAppPool1" managedRuntimeVersion="v2.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
       </applicationPools>
    </system.applicationHost>

2
ดี - ทุกโพสต์เดียวที่กล่าวถึง IIS ฉันใช้ IIS Express ขอบคุณสำหรับการแก้ไข
PhillyNJ

4

เปิดโครงการ -> กดShift + F4 (หน้าคุณสมบัติเปิด) -> เลือกสร้าง -> ในกรอบงานเป้าหมายเลือก. NET Framework 4 -> ตกลง


3

สร้างกลุ่มใหม่โดยเลือก. Net Framework v4.0.3xxxxx

ใช้โหมด Manage Pipeline: Integrated

กำหนดให้เว็บไซต์ของคุณและทำ


2

เมื่อต้องการแก้ไขปัญหานี้เพียงคลิกที่ไอคอนเวอร์ชัน ASP.NET ในส่วนเครื่องมือไซต์ของแผงควบคุมเพื่อสลับกรอบงานเป็น 4.0


2

ฉันมีข้อผิดพลาดจากการคอมไพล์MSBuild ที่ล้มเหลวในไฟล์โครงการที่แปลงจาก VS เวอร์ชันก่อนหน้าเป็น VS2010 และ. NET 4.0 จริงๆแล้วมันเป็นโครงการการปรับใช้เว็บและวิธีแก้ปัญหาที่ใช้ได้ผลสำหรับฉันคือการเพิ่มรายการต่อไปนี้ลงในส่วนPropertyGroupเมื่อเริ่มต้นไฟล์MSBuild :

<ProductVersion>10.0.11107</ProductVersion>

<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>

บางทีสิ่งเหล่านี้อาจได้รับการอัพเดตโดยอัตโนมัติเมื่อมีการแปลงโครงการประเภทอื่นใน VS2010 แต่มันหายไปจากไฟล์โครงการ Web Deployment ของฉันหลังจากที่ถูกแปลง


2

สิ่งที่ฉันทำ: ฉันเปลี่ยนค่าของ Application Pool เป็น DefaultAppPool จากค่าก่อนหน้า คุณทำได้ในการตั้งค่าขั้นสูง (เว็บไซต์ -> จัดการเว็บไซต์ -> การตั้งค่าขั้นสูง>


2

ฉันยังได้รับปัญหาเดียวกันขณะที่เรียกใช้แอปพลิเคชันของฉันในเครื่องซึ่งชี้ไปที่. Net Framework 4.7.1 ข้อผิดพลาดคือ " แอตทริบิวต์ที่ไม่รู้จัก TargetFrameWork " ดังที่แสดงด้านล่าง ป้อนคำอธิบายรูปภาพที่นี่

แต่ไม่มีคำตอบข้างต้นช่วยฉัน ในที่สุดเมื่อฉันเปลี่ยนหมายเลขพอร์ตปัจจุบันของฉัน(1413) เป็นค่าอื่น ๆ (60179) ดังที่แสดงไว้ด้านล่างมันใช้งานได้ดีสำหรับฉัน แต่ฉันไม่แน่ใจว่าเหตุผลที่แท้จริงนี้เป็นเช่นไร

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


ฉันแค่ตรวจสอบว่าฉันมีข้อผิดพลาดที่แน่นอนนี้และฉันพยายามเปลี่ยนพอร์ตตามที่ระบุในคำตอบนี้ ฉันกำลังเรียกใช้ไคลเอนต์ทดสอบ WCF เพื่อเริ่มบริการนี้บน localhost หลังจากเปลี่ยนหมายเลขพอร์ตแล้วบริการก็สามารถเริ่มต้นได้ ขอบคุณสำหรับคำแนะนำของคุณ
Evan

หลังจากลองใช้คำแนะนำทั้งหมดเพียงข้อเดียวนี้แก้ไขปัญหาของฉัน ขอบคุณมาก.
Prabo

ยินดีต้อนรับ @Prabo ของคุณถ้าเป็นไปได้กรุณาช่วยฉันด้วย UP โหวต
Rinoy Ashokan

ยินดีต้อนรับ @Evan หากเป็นไปได้โปรดช่วยฉันด้วยคะแนนขึ้น
Rinoy Ashokan

1

เพิ่งมีสิ่งนี้ใน VS 2010

คงที่โดยการแก้ไขไฟล์ .sln และเปลี่ยนTargetFrameworkMonikerจะมีค่า" .NETFramework เวอร์ชัน% 3Dv4.0"ที่กำหนดให้มัน


0

หากคุณรวบรวมไฟล์และค่าของ "targetFramework" ถูกตั้งค่าเป็นเวอร์ชันเฉพาะเช่น 4.0

ตรวจสอบให้แน่ใจว่าโฮสต์กำลังทำงาน. net framework ตามรุ่นที่ระบุไว้

ถ้าไม่ดาวน์โหลดกรอบ. net

หลังจากดาวน์โหลดหากไม่ได้ตั้งค่าอัตโนมัติในตัวจัดการ IIS ให้ใช้ส่วนขยายของ. NET Framework รุ่นที่ดาวน์โหลดใหม่

เพิ่มนามสกุลด้วยตนเองโดยไปที่โฟลเดอร์ของ. NET Framework ที่ดาวน์โหลดล่าสุดผ่านตัวจัดการ IIS:

1. คลิกขวาที่โฟลเดอร์เว็บไซต์

2. ไปที่ "คุณสมบัติ"

3. ภายใต้ "ไดเรกทอรีเสมือน" คลิก "การกำหนดค่า"

4. แก้ไขพา ธ ของนามสกุล ".aspx" (ซึ่งพา ธ ชี้ไปยังเวอร์ชันอื่นที่ไม่ใช่เวอร์ชันของ. NET Framework ที่ดาวน์โหลดล่าสุด) ไปยังพา ธ ที่ถูกต้องซึ่งเป็นโฟลเดอร์ของ. NET Framework ที่ดาวน์โหลดใหม่ จากนั้นเลือกไฟล์ "aspnet_isapi.dll"

5. คลิกตกลง!



0

ทำตามสองขั้นตอนเหล่านี้:

ลงทะเบียน. NET Framework เวอร์ชั่น 4.0 (หากยังไม่ได้ลงทะเบียน)

  1. C: \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319> aspnet_regiis -i

  2. ในกลุ่มแอพเปลี่ยน. net framework เป็น v4.0


0

หากคุณติดตั้ง IIS หลังจากการติดตั้ง. Net FrameWork คุณต้องติดตั้ง. net framework อีกครั้งสำหรับ IIS aspnet_regiis -iดังนั้นสิ่งที่เราต้องทำคือการวิ่ง หวังว่ามันจะเป็นประโยชน์


0

เห็นข้อผิดพลาด "แอตทริบิวต์ที่ไม่รู้จัก 'targetFramework'" ในหน้า 'คอนโซลเอาต์พุต' ของ Jenkins บนเซิร์ฟเวอร์บิลด์ นี่คือหลังจากที่ฉันเปลี่ยน 'กรอบงานเป้าหมาย' สำหรับหลายโครงการจาก '.NET Framework 3.5' เป็น '.NET Framework 4' และยืนยันการเปลี่ยนแปลงของฉัน

ในเจนกินส์การตั้งค่าโครงการจะต้องเปลี่ยน สำหรับวิธีแก้ปัญหา 'MSBuild Version' จะต้องเปลี่ยนจาก 'v3.5' เป็น 'v4.0'


0

เพิ่งมีปัญหานี้การปรับใช้แอพใหม่กับกล่อง IIS เก่า การตรวจสอบนำไปสู่การติดตั้งแบบรันไทม์ v4.5.1 แต่แอปที่ต้องการ v4.5.2

ไม่มีอะไรนอกเหนือจากการติดตั้ง ASP .Net รุ่นรันไทม์ที่ถูกต้อง


0

อาจเป็นได้ว่าคุณมีไฟล์ MSBUILD proj ของคุณเองและกำลังใช้<AspNetCompiler>งานอยู่ ในกรณีนี้คุณควรเพิ่มToolPathสำหรับ. NET4

<AspNetCompiler
    VirtualPath="/MyFacade"
    PhysicalPath="$(MSBuildProjectDirectory)\MyFacade\"
    TargetPath="$(MSBuildProjectDirectory)\Release\MyFacade"
    Updateable="true"
    Force="true"
    Debug="false"
    Clean="true"
    ToolPath="C:\Windows\Microsoft.NET\Framework\v4.0.30319\">      
</AspNetCompiler>

0

สำหรับ layering เพียงแค่เปลี่ยนเวอร์ชั่นของ targetFramework ในไฟล์ web.config เท่านั้นสิ่งอื่น ๆ ไม่จำเป็นต้องเปลี่ยน


0

ฉันมีปัญหาเดียวกันและพบสคริปต์ poweshell ที่ดีนี้เพื่ออัปเดตแอพของคุณทั้งหมดในเวลาเดียวกัน: https://gallery.technet.microsoft.com/scriptcenter/How-to-set-the-IIS-9c295a20

ตรวจสอบให้แน่ใจว่าได้ตั้ง$IISAppPoolDotNetVersion = "v4.0"ตัวแปรไว้ที่ด้านบนสุด


0

2 ขั้นตอนต่อไปนี้จะบังคับให้รีเฟรชแคช Visual Studio และ IIS Express และมักจะแก้ไขปัญหาที่คล้ายกันของฉัน:

  1. เพียงสลับกรอบโครงการจาก 4+ เป็น. NET Framework 3.5และเรียกใช้
  2. หากทำงานได้สำเร็จคุณสามารถเปลี่ยนกลับเป็นเฟรมเวิร์กเป้าหมาย 4+ ที่ต้องการและดูว่ามันอาจจะทำงานได้อีกครั้ง

0

การเปลี่ยนหมายเลขพอร์ตสำหรับการพัฒนาท้องถิ่นช่วยฉันขอบคุณ @Rayay Ashokan ฉันได้ทำการแก้ไขปัญหาทั้งหมดแล้วและในที่สุดก็พบว่าการกำหนดค่าโครงการจะถูกเก็บไว้ใน IIS express สำหรับหมายเลขพอร์ต ป้อนคำอธิบายรูปภาพที่นี่


-1

สำหรับทุกคนที่มีสิ่งนี้ที่ไม่มี IIS ที่ทำงานบน dev PC ของพวกเขานี่คือสิ่งที่เกิดขึ้นกับฉัน: ฉันมีเว็บไซต์หนึ่งบนเขียนทับไฟล์จากเว็บไซต์ diff ที่เป็น 4 ในขณะที่ก่อนหน้านี้คือ 3.5 มีข้อผิดพลาดนี้ แก้ไขได้ง่าย ๆ เพียงเปลี่ยนชื่อไดเรกทอรีของเว็บไซต์ซึ่งบนพีซี dev สามารถเป็นอะไรก็ได้ดังนั้นจึงไม่มีปัญหา ข้างต้นอาจจะดูสง่างามกว่าเดิม แต่บางครั้งก็ใช้งานง่ายถ้าคุณสามารถหลีกหนีได้นั่นคือคุณอยู่ใน dev มากกว่า QA หรือ Prod

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