เกิดข้อผิดพลาดขณะพยายามกำหนดรหัสกระบวนการของกระบวนการ DNX ที่โฮสต์แอปพลิเคชันของคุณ


101

ฉันได้รับข้อความแสดงข้อผิดพลาดนี้เมื่อฉันพยายามเริ่มแอปพลิเคชัน

เกิดข้อผิดพลาดขณะพยายามกำหนดรหัสกระบวนการของกระบวนการ DNX ที่โฮสต์แอปพลิเคชันของคุณ

มีวิธีแก้ไขปัญหาหรือไม่?

คำตอบ:


151

สำหรับฉันปัญหาได้รับการแก้ไขโดยการปิด Visual Studio ลบ

project.lock.json

และเริ่ม Visual Studio อีกครั้ง

แก้ไข : ฉันใช้ RC1


2
แก้ไขปัญหาของฉันในโครงการ RC1
Nadav Hury

@NadavHury เหมือนกันที่นี่ :)
ManyRootsofAllEvil

1
แก้ไขปัญหาที่ฉันมีด้วยตัวอย่างแอป RC1 ที่ดาวน์โหลดจาก PluralSight ซึ่งเป็นที่นิยมมาก
tomRedox

5
ไม่ได้ผลอีกต่อไป np ไมโครซอฟท์ เราจะคิดออก ครั้งแล้วครั้งเล่าและ ... อีกครั้ง

1
อยู่ที่ไหนproject.lock.json?
CodyBugstein

34

ไมโครซอฟท์มีการเปลี่ยนแปลงรูปแบบโฮสติ้งที่อธิบายไว้ในบันทึกประจำรุ่น

ในproject.jsonแทนที่การพึ่งพา

"Microsoft.AspNet.Server.IIS": "1.0.0-beta7"

ด้วย

"Microsoft.AspNet.Server.Kestrel": "1.0.0-beta8"


ในweb.configในhandlersส่วนลบรายการยกเว้น

<add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" />

เสร็จสมบูรณ์web.configจะมีลักษณะดังนี้:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
    </handlers>
    <httpPlatform processPath="%DNX_PATH%" arguments="%DNX_ARGS%" stdoutLogEnabled="false" startupTimeLimit="3600"/>
  </system.webServer>
</configuration>

RC1:ขณะใช้ RC1 ฉันพบข้อผิดพลาดหลังจากย้ายโฟลเดอร์โซลูชัน หลังจากลบbinและobjโฟลเดอร์ทุกอย่างทำงานอีกครั้ง
ตามที่ user764754 ระบุไว้การรีสตาร์ท Visual Studio ก็สามารถช่วยได้เช่นกัน


ในรูปแบบโฮสติ้งใหม่คุณไม่ได้ใช้ web.config เลยและสามารถลบออกได้ทั้งหมด httpPlatformHandler และ Startup.cs เข้ามาแทนที่ web.config เนื่องจากคุณกำลังข้าม IIS ไปในระดับหนึ่ง
cygnim

2
ฉันใช้เทมเพลตใหม่ล่าสุดหลังจากติดตั้ง 1.0.0-beta8 ก่อนจากนั้นสร้างโครงการ ASP.NET ใหม่ใน VS 2015 รายการทั้งหมดถูกต้อง แต่ฉันยังคงได้รับข้อผิดพลาดเหมือนกับ Domysee ใครช่วยอธิบายว่า "% DNX_PATH%" และ "% DNX_ARGS%" หมายความว่าอย่างไร
okieh

1
ฉันควรชี้แจงคุณไม่จำเป็นต้องมี web.config ในโครงการของคุณ ไฟล์ web.config น้อยที่สุดถูกสร้างขึ้นในระหว่างการคอมไพล์ซึ่งโดยพื้นฐานแล้วจะเพิ่ม HttpPlatformHandler ไปยังไปป์ไลน์และนำการรับส่งข้อมูลจาก IIS ไปยังเซิร์ฟเวอร์ Kestrel คุณพูดถูกมีไฟล์ web.config แต่ไม่จำเป็นในฐานรหัสโครงการของคุณ
cygnim

3
เพิ่งรีสตาร์ท VS ทำเพื่อฉันด้วย RC-1 ไม่จำเป็นต้องลบ
user764754

2
ฉันมีปัญหาเดียวกันกับ RC1 วิธีแก้ปัญหาสำหรับฉันคือการลบ web.config (ใน wwwroot)
rad

30

สำหรับคนอื่น ๆ ที่มีปัญหานี้ในกรณีที่วิธีแก้ปัญหาอื่น ๆ ใช้ไม่ได้ - ฉันพบคำตอบในเธรดนี้: การ บังคับให้ใช้ SSL: เกิดข้อผิดพลาดที่พยายามกำหนดรหัสกระบวนการของกระบวนการ DNX ที่โฮสต์แอปพลิเคชันของคุณ

ฉันโครงการของคุณใช้หรือบังคับใช้ SSL ให้รันโดยไม่ต้องดีบัก (CTRL + F5) ก่อนจะขอให้คุณสร้างใบรับรอง SSL ในเครื่องและหลังจากนั้นการดีบักจะทำงานและข้อผิดพลาดจะหายไป


สิ่งนี้แก้ไขให้ฉัน ฉันได้ย้ายโครงการไปยังคอมพิวเตอร์เครื่องใหม่ที่ไม่ได้ติดตั้งใบรับรอง ขอบคุณ.
ก้าว

ดีแค่นั้นเอง! ฉันจะสังเกตสิ่งนี้ในหน้า "การเปิดใช้งานการรับรองความถูกต้องโดยใช้ Facebook ... " เนื่องจากคำแนะนำรวมถึงการบังคับใช้ SSL
N8allan

ฉันไม่สามารถทำงานได้ด้วยการทำ CTRL + F5 F5 ทำงานหลังจากรันสิ่งนี้เพื่อเชื่อถือใบรับรอง iis express ของฉัน ฉันไม่มีคำเตือน แต่สิ่งนี้ได้รับการแก้ไขแล้วสำหรับฉัน
Josh Close

11

สำหรับสิ่งที่คุ้มค่านี่เป็นข้อความแสดงข้อผิดพลาดทั่วไปที่สามารถใช้เป็นแฮร์ริ่งสีแดงสำหรับปัญหาต่างๆที่ httpPlatformHandler ไม่สามารถเรียกใช้ปฏิบัติการที่กำหนดได้ (dnx ในกรณีนี้)

ในกรณีของฉันฉันได้รับข้อผิดพลาดนี้เป็นผลโดยตรงจากความเข้าใจผิดในไฟล์ launchSettings.json ฉันพยายามเปิดใช้งานปลายทาง https สำหรับแอปพลิเคชันของฉันและทำซ้ำ sslport ใน applicationUrl ของฉันโดยไม่ได้ตั้งใจ ตามที่ฉันเข้าใจ applicationUrl ควรเป็นชื่อโฮสต์ / พอร์ต http ของแอปพลิเคชันและโดยการกรอก sslPort มันเพียงแค่กำหนดค่าสภาพแวดล้อม IIS Express เพื่อฟัง https บนชื่อโฮสต์ที่กำหนดใน applicationUrl บนพอร์ตที่ให้ไว้ใน sslPort

ตัวอย่างเช่น:

  "iisSettings": {
     "windowsAuthentication": false,
     "anonymousAuthentication": true,
     "iisExpress": {
       "applicationUrl": "http://localhost:44000",
       "sslPort": 44300
      }
  }

จัดเตรียมจุดสิ้นสุดสองจุดต่อไปนี้บน localhost

  • Http ผ่านพอร์ต 44400
  • Https ผ่านพอร์ต 44300

ถ้าคุณต้องมีพอร์ตเดียวกันในการตั้งค่า applicationUrl และ sslPort คุณจะได้รับข้อผิดพลาดที่เกี่ยวข้องกับเธรดนี้

นี่เป็นเรื่องจริงสำหรับฉันในRC1


เหตุใด sslPort จึงควรแตกต่างจาก applicationUrl มันเคยทำงานให้ฉันจนถึง RTM ...
Boris Lipschitz

ฉันมีข้อผิดพลาด: ไม่สามารถเชื่อมต่อกับเว็บเซิร์ฟเวอร์ 'IIS Express' และหลังจากลบไฟล์ "\ .vs \ config \ applicationhost.config" ฉันได้รับข้อผิดพลาด "เกิดข้อผิดพลาดขณะพยายาม ... " ในพร็อพเพอร์ตี้โปรเจ็กต์> ดีบักฉันไม่ได้เลือก SSL รันดีบักเกอร์ (ใช้งานได้) ทำเครื่องหมาย SSL อีกครั้งและคัดลอก URL ไปยัง "URL ของแอป" การดีบักในโหมด SSL จะทำงานอีกครั้ง ข้อผิดพลาดปรากฏขึ้นหลังจากการอัปเดต windows ไม่แน่ใจว่าเป็นสาเหตุหรือไม่ ตอนนี้ iisSettings ของฉันคือ "iisExpress": {"applicationUrl": " localhost: 44369", "sslPort": 44369} .. จะใช้งานได้หากหมายเลขพอร์ตไม่เหมือนกัน
JimiSweden

6

มันเป็นไปได้ที่จะปรับผมพบว่าผมต้องมองผ่านแม่แบบการปรับปรุงใหม่ที่นี่

อัปเดต web.config ของคุณใน wwwroot เพื่อรวม:

<httpPlatform processPath="%DNX_PATH%" arguments="%DNX_ARGS%" stdoutLogEnabled="false" startupTimeLimit="3600"/>

คุณจะต้องเปลี่ยนวิธีการดีบักโครงการโดยใช้ Kestrel โดยแก้ไข project.json ของคุณ:

"commands": {
  "web": "Microsoft.AspNet.Server.Kestrel"
},
"dependencies": {
  "Microsoft.AspNet.IISPlatformHandler": "1.0.0-beta8",
  "Microsoft.AspNet.Server.Kestrel": "1.0.0-beta8",
}

และแก้ไข hosting.ini ของคุณ

server=Microsoft.AspNet.Server.Kestrel

และเพิ่มสิ่งนี้ลงในวิธีกำหนดค่าใน startup.cs

// Add the platform handler to the request pipeline.
app.UseIISPlatformHandler(); 

การเพิ่มการอ้างอิงเหล่านี้จะช่วยให้คุณสามารถเรียกใช้โครงการได้


5

ฉันพบปัญหานี้เนื่องจากการกำหนดค่าโครงการพยายามเปิดhttps: // localhostแทนที่จะเป็น http คลิกขวาที่โครงการในเว็บภายใต้ "Debug" และปรับ "App URL" ให้เป็น http แทน https ใส่คำอธิบายภาพที่นี่

อีกวิธีหนึ่งในการแก้ไขปัญหานี้คือการเปลี่ยน Launcher จาก "IIS Express" เป็น "Web"


3

ใน Visual Studio:

ขณะทำตามบทช่วยสอนนี้ฉันได้รับข้อผิดพลาดที่คล้ายกัน

ขั้นแรกฉันได้รับข้อผิดพลาด: "เกิดข้อผิดพลาดขณะพยายามกำหนดรหัสกระบวนการของ dotnet.exe ... " ฉันทำตามขั้นตอนต่อไปนี้

  1. ฉันเริ่มแอปพลิเคชันโดยไม่ต้องดีบัก CTRL + F5
  2. จากนั้นฉันก็ได้รับตัวเลือกในการยอมรับใบรับรองที่ลงนามด้วยตนเองสำหรับ localhost
  3. ฉันทำตามคำแนะนำจากนั้นฉันก็สามารถเยี่ยมชมแอปพลิเคชันของฉันโดยใช้ AppUrl ที่ฉันคัดลอกไว้หลังจากเปิดใช้งาน SSL ในการตั้งค่าการดีบักโครงการ

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

ซึ่งเกิดจากการมีอินสแตนซ์อื่นของแอปพลิเคชันทำงานอยู่

ฉันหวังว่าคำตอบนี้จะช่วยใครบางคนได้


เดี๋ยวก่อนคำตอบคือ "เกิดจากการที่แอปพลิเคชันอื่นทำงานอยู่" ควรทำให้ชัดเจนมากขึ้นทันที
Bloodied

2

ในกรณีของฉันในโครงการ asp net core 1.1, .net framework 4.5.2 ข้อผิดพลาดไม่ได้อ้างถึง dnx เนื่องจากไม่มีอีกต่อไป แต่จะอ้างถึงชื่อโครงการ exe ข้อผิดพลาดเวอร์ชันอื่นอ้างถึงเพียงแค่ไม่สามารถเชื่อมต่อกับ iis express

ปัญหาเกิดจากการแนะนำกฎการเขียนชื่อโฮสต์ใหม่ที่พยายามบังคับให้การเชื่อมต่อทั้งหมดมีชื่อโฮสต์ที่ขึ้นต้นด้วย www เช่นเปลี่ยนเส้นทาง gty.org ไปที่ www.gty.org เพื่อให้สอดคล้องกับใบรับรอง ssl ของเรา สิ่งนี้ใช้ได้ดีในการผลิต แต่คุณไม่สามารถบังคับให้https: // localhost: 44347 /ขึ้นต้นด้วย www และคาดว่า iis express จะสามารถจัดการได้

<rule name="CanonicalHostNameAddwww" enabled="true" stopProcessing="true">
      <match url="(.*)" ignoreCase="true" />
      <conditions logicalGrouping="MatchAll">        
        <add input="{HTTP_HOST}" negate="true" pattern="^www\." />
      </conditions>
      <action type="Redirect" url="http://www.{HTTP_HOST}{HTTP_URL}"  appendQueryString="false" redirectType="Permanent" />
</rule>

วิธีแก้ปัญหาคือการแสดงความคิดเห็นเกี่ยวกับกฎเมื่อทำงานในสตูดิโอภาพหรือเพิ่มเงื่อนไข:

<add input="{HTTP_HOST}" negate="true" pattern="^localhost" />

2

สมมติว่าคุณใช้งาน IIS Express ด้วย SSL ที่เปิดใช้งานขึ้นอยู่กับการติดตั้งของคุณคุณจะต้องใส่ใบรับรองการพัฒนา IIS Express (ออกให้กับ "localhost" / ออกโดย "localhost") ใน [Local Computer \ Personal \ Certificates] หรือ [Local Computer \ Trusted Root Certification \ Certificates] หนึ่งในนั้นควรใช้งานได้ (ใช้ Windows 10 + VS2015) HTH


การเพิ่มใบรับรองการพัฒนา IIS Express ใน Local Computer \ Trusted Root Certification \ Certificates ทำให้ฉันได้ผล ขอบคุณ! (สำหรับคนอื่นในกรณีของฉันฉันมีใบรับรองใน Local Computer \ Personal \ Certificates อยู่แล้ว)
David Aleu


1

ฉันประสบปัญหานี้เมื่อฉันสลับการตั้งค่าและได้ปิดใช้งาน " เปิดใช้งานการตรวจสอบความถูกต้องแบบไม่ระบุตัวตน " ในโครงการ> คุณสมบัติ> ดีบัก ตรวจสอบให้แน่ใจว่าเปิดใช้งานแล้ว ปิดและเปิดโปรเจ็กต์ใหม่จากนั้นลองอีกครั้ง หวังว่านี่จะช่วยได้


ฉันมีปัญหาเดียวกัน แต่แทนที่จะต้องเปิดใช้งานแบบไม่ระบุตัวตนเท่านั้นฉันต้องเปิดใช้งานการรับรองความถูกต้องแบบไม่ระบุชื่อหรือ Windows หากทั้งคู่เป็นเท็จฉันได้รับข้อผิดพลาด
birken25

1

ฉันใช้ RC1 และ EF First Code Approach ความคิดที่ดีในการเริ่มต้นการตรวจสอบคือเรียกใช้โปรเจ็กต์ด้วยตัวเลือก: "เริ่มโปรเจ็กต์โดยไม่ต้องดีบั๊ก" (Ctrl + F5) จากนั้นฉันได้รับข้อผิดพลาดที่มีความหมายมากขึ้นสำหรับฉัน: "ไม่สามารถอ่านส่วนการกำหนดค่า 'entityFramework' ได้เนื่องจากไม่มีการประกาศส่วน" มันไม่ได้ผลสำหรับฉันเนื่องจากไฟล์ web.config


1
  1. อัปเดต dnvm
  2. เปลี่ยนเวอร์ชัน global.json sdk เป็นค่าเริ่มต้นของ dnvm
  3. ไม่จำเป็นต้องแตะ project.json หรือ project.lock.json

0

เมื่ออัปเกรดจาก beta7 -> beta8 ฉันพบปัญหานี้และคำแนะนำที่ Ben M และ Domysee ให้ไว้ก็ใช้ได้ผลสำหรับฉัน อย่างไรก็ตามเพื่อนร่วมงานคนหนึ่งของฉันยังคงประสบปัญหาในการดำเนินโครงการที่กำหนดเป้าหมายdnxcore50เท่านั้น หากคุณแน่ใจว่าคุณได้รันคำสั่งต่อไปนี้:

dnvm install 1.0.0-beta8 -r coreclr
dnvm install 1.0.0-beta8 -r coreclr -arch x86

มันเป็นคำสั่งที่สองโดยเฉพาะที่แก้ไขบนเครื่องของเขา คุณยังสามารถตรวจสอบอีกครั้งว่ามีโฟลเดอร์นี้dnx.exeอยู่:

%userprofile%\.dnx\runtimes\dnx-coreclr-win-x86.1.0.0-beta8\bin

0

ฉันเพิ่งค้นพบอีกหนึ่งปัญหาที่ทำให้เกิดปัญหานี้!

web.configในรูทโปรเจ็กต์มีกฎการเขียน URL IIS ที่หลบเลี่ยงเพื่อบังคับใช้ HTTPS การลบกฎเหล่านั้นช่วยแก้ปัญหาได้


0

มีหลายสิ่งหลายอย่างที่อาจทำให้เกิดข้อผิดพลาดนี้ นี่คือบางส่วนที่เหมาะกับฉัน:

  1. เพียงแค่ลบweb.configในwwwrootโฟลเดอร์ของคุณ มันจะถูกสร้างขึ้นใหม่อย่างถูกต้องในการรวบรวม
  2. หากคุณกำลังพยายามใช้SSLและในของคุณIIS Expressและย้ายSSL CertไปยังTrusted Root Certification Authoritiesโฟลเดอร์ไม่ได้ผล ในDebugแท็บของPropertiesโครงการที่คุณพยายามเรียกใช้ ลองยกเลิกการEnable SSLคลิกช่องทำเครื่องหมายแล้วคลิกอีกครั้งเพื่อเปิดใช้งานและรับพอร์ตอื่น คุณอาจต้องทำสองสามครั้ง

0

อีกวิธีที่เป็นไปได้
สำหรับทุกคนที่เล่นด้วยการตั้งค่า SSL ฉันพบว่าเพียงแค่เปลี่ยนพอร์ต SSL ในlaunchSettings.jsonไฟล์เป็นพอร์ตใกล้เคียงอื่นช่วยแก้ปัญหาได้

FYI ฉันไม่พบสิ่งใดในเครื่องโดยใช้พอร์ตดั้งเดิมและฉันไม่ได้รับข้อผิดพลาดในการใช้พอร์ต

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