IIS में ASP.NET कोर 3.1 साइट शुरू करना [डुप्लिकेट]
मैं अपने ASP.NET Core 3.1 को IIS (v10) में उस तरह से शुरू नहीं कर पाया, जिस तरह से मैं उम्मीद कर रहा था। मैं सामान्य रूप से फ़ोल्डरों के लिए साइट पर प्रकाशित करता हूं, लेकिन जब मैं http: // localhost: 80 या https: // localhost: 443 (जिसमें दोनों आईआईएस साइट बाध्य है) पर जाकर अपने विंडोज सर्वर 2019 वीएम के भीतर से परीक्षण करते हैं, मुझे सिर्फ 500.19 प्रतिक्रिया मिली है। लेकिन अगर कमांड लाइन से, मैं प्रवेश dotnet MyWebApp.dll
करता हूं , तो साइट https: // localhost: 5001 / पर दिखाई देती है।
क्या चल रहा है? पोर्ट 80 स्वचालित रूप से काम क्यों नहीं कर रहा है, यह देखते हुए कि यह वहां IIS में बाध्य है?
आईआईएस 3.1 साइट शुरू करने के लिए कमांड लाइन का उपयोग करने के लिए क्या आईआईएस पर फ़ाइलों का उपयोग करके या कॉपी करके केवल इस काम को करने के लिए कुछ चाल है?
जवाब
सुनिश्चित करें कि आपने निम्नलिखित कार्य किए हैं:
- नवीनतम कोर होस्टिंग बंडल स्थापित किया गया। यदि नहीं, तो यहां जाएं और "होस्टिंग बंडल" देखेंhttps://dotnet.microsoft.com/download/dotnet-core/3.1 (आपको नियमित रूप से वहां जाना चाहिए, हर महीने के बारे में एक नया संस्करण, नवीनतम यह लिखते समय 3.1.7 है)
- ऐप पूल में, सुनिश्चित करें कि .NET फ्रेमवर्क चयनित नहीं है
प्रकाशित होने पर उपयोग करें
Deployment Mode = Framework-Dependent
Target Runtime = win-x64
आपके प्रकाशन प्रोफ़ाइल में (आपको यह फ़ाइल प्रोजेक्ट फ़ोल्डर /Properties/PublishProfiles/YourProfileName.pubxml में मिलती है) प्रोफ़ाइल को सहेजने के बाद, आपको आवश्यकता होगी
<EnvironmentName>Production</EnvironmentName>
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
IIS का उपयोग करते समय InProcess सबसे तेज विकल्प है। प्रकाशित करते समय, यह आपके द्वारा उत्पन्न वेब पर समाप्त हो जाएगा। इस तरह से कॉन्फ़िगर करें
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\YourWebApp.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="InProcess">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Production" />
</environmentVariables>
</aspNetCore>
</system.webServer>
</configuration>
स्टेजिंग सर्वर पर तैनाती करते समय, एक नया प्रकाशन प्रोफ़ाइल बनाएं, और उपयोग करें
<EnvironmentName>Staging</EnvironmentName>
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
जब आपको https: // localhost: 5001 / से जवाब मिलता है तो आप Kestrel चला रहे हैं, IIS नहीं
ऐसा लगता है कि आप Asp.net Core वेब होस्टिंग बंडल को स्थापित करने से चूक गए। Asp.net कोर डिफ़ॉल्ट रूप से IIS द्वारा समर्थित नहीं है यहां तक कि आप इसे विज़ुअल स्टूडियो IIS एक्सप्रेस में भी चला सकते हैं। इसके अलावा, जब आप asp.net कोर वेब होस्टिंग बंडल स्थापित करते हैं, तो IIS AspNetCore हैंडलर को पंजीकृत नहीं करेगा।
तो कृपया सुनिश्चित करें कि आपने web.config में हैंडलर और asp.net कोर मॉड्यूल पंजीकृत किया है
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\MyWebApp.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
</system.webServer>
</location>
बेशक, आप अपने आवेदन को वीएस वेब परिनियोजन उपकरण के साथ प्रकाशित कर सकते हैं। जब आप प्रोजेक्ट प्रकाशित करते हैं तो यह इन कॉन्फ़िगरेशन को पंजीकृत करेगा।
https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-3.1