HTTP ४०४ पृष्ठ वेब hosted में नहीं मिला है जिसे IIS in.५ में होस्ट किया गया है


96

मेरे पास एक वेब एपि एप्लीकेशन है। यह पूरी तरह से अच्छी तरह से काम करता है जब मैंने वीएस 2010 डिबगिंग देव सर्वर का उपयोग करके इसका परीक्षण किया। लेकिन मैंने अब इसे IIS 7.5 में तैनात कर दिया है और एप्लिकेशन एक्सेस करने का प्रयास करते समय मुझे HTTP 404 त्रुटि मिल रही है।

यहाँ मेरा web.config है

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=aspnet-FlowGearProxy-20123141219;Integrated Security=True" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <appSettings>
    <add key="webpages:Version" value="2.0.0.0" />
    <add key="webpages:Enabled" value="true" />
    <add key="PreserveLoginUrl" value="true" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login" timeout="2880" />
    </authentication>
    <pages>
      <namespaces>
        <add namespace="System.Web.Helpers" />
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
        <add namespace="System.Web.WebPages" />
      </namespaces>
    </pages>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" />
  </system.webServer>
</configuration>

2
मेरे साथ भी वही दिक्कत है। मुझे अभी तक कोई समाधान नहीं मिला है, हालांकि एक बात जो मुझे पता चली है वह यह है कि यदि आईआईएस में साइट का चयन करें, तो हैंडलर मैपिंग सुविधा पर जाएं, स्थिर फ़ाइलों के लिए एक मैपिंग है जो * एक फाइल में मैप करता है जो मौजूद होना चाहिए। जब मैं इस मैपिंग को हटा देता हूं और सभी HTTP क्रियाओं के लिए एक नया मैपिंग जोड़ देता हूं, तो मुझे अब 404 नहीं मिलते हैं, यह एक रिक्त सफेद पृष्ठ द्वारा प्रतिस्थापित किया जाता है।
डेस्परर्ट

>> वीएस 2010 डिबगिंग देव सर्वर का उपयोग करना। - एकेए बुराई कैसिनी। ब्लॉगs.msdn.com/b/rickandy/archive/2011/04/22/… - देखें - यदि वह काम नहीं करता है, तो एक नया MVC 4 WebApi ऐप बनाएं और परीक्षण परिनियोजन - सरल
RickAndMSFT

जवाबों:


93

मैं इससे भी जूझ रहा था। सौभाग्य से, स्टीव माइकलॉटी ने एक समाधान का दस्तावेजीकरण किया जो मेरे लिए यहां काम करता है

दिन के अंत में, मैंने अपने वेब कॉन्फ़िगरेशन में सभी क्रियाओं (क्रिया = "*") को ExtensionlessUrlHandler-Integrated-4.0 हैंडलर में सक्षम किया।

<system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" />
        <handlers>
            <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
            <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" />
        </handlers>
</system.webServer>

दूसरों ने बताया है कि WebDAV सक्षम होने के कारण समस्याएँ होती हैं। सौभाग्य से, मैं उस मुद्दे पर भी नहीं चला।


3
उस एक के लिए +1। लेकिन मैंने इसे IIS मैनेजर के एप्लिकेशन से हैंडलर मैपिंग में बदल दिया। इसे क्रियाओं के एक समूह के लिए चालू किया गया था। मैंने उसे सभी क्रियाओं (*) और वॉइला में बदल दिया। लेकिन हमेशा स्रोत में रखना बेहतर होता है।
वुल्फ

1
मैं एक ही समस्या है, लेकिन इन परिवर्तनों ने मेरी मदद नहीं की। क्या कोई अन्य विन्यास भी है? या एक पुस्तकालय संदर्भ हो सकता है? कृपया, यह भी देखें: stackoverflow.com/questions/27303523/…
बाबाक

2
बहुत से लोग कहते हैं कि runAllManagedModulesForAllRequests का उपयोग प्रदर्शन (हेमंत गौतम के नीचे के उत्तर की जांच करें) को प्रभावित करेगा। हालाँकि मुझे एक ही सेवा कार्य नहीं मिल सकता है, इसलिए मैं यहां कॉन्फ़िगरेशन का पालन करता हूं: blog.maartenballiauw.be/post/2012/12/07/…। यह लिंक यह भी बताता है कि WebDAV को सक्षम करने से परिणाम भी प्रभावित हो सकता है
Hongng Long


1
मेरे लिए, क्रिया पहले से ही थी *। मुझे *यह काम करने के लिए पथ बदलने के साथ-साथ *.अभी भी समस्या का कारण
बनना पड़ा

56

एक ही मुद्दा था। इस कॉन्फ़िगरेशन सेटिंग ने समस्या हल कर दी।

<system.webServer>
    .....
    <modules runAllManagedModulesForAllRequests="true" />
    .....
</system.webServer>

जैसा कि http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagedmodulesfo.html में बताया गया है, उपरोक्त समाधान से बचना चाहिए। इसकी जगह इसका इस्तेमाल करें। लोप्सर्ड द्वारा भी एक ही समाधान प्रदान किया जाता है। उपयोगकर्ताओं को पहले काम करने वाले समाधान को लागू करने से बचने के लिए यहां रखना।

<modules>
  <remove name="UrlRoutingModule-4.0" />
  <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
  <!-- any other modules you want to run in MVC e.g. FormsAuthentication, Roles etc. -->
</modules>

ठीक काम करता है, लेकिन यह बहुत अच्छा समाधान नहीं है। UrlRoutModule का उपयोग करना बेहतर है (नीचे Lopsided द्वारा उत्तर देखें)। britishdeveloper.co.uk/2010/06/…
Der_Meister

37

यदि ASP.NET के बाद IIS स्थापित या सक्षम है, तो आपको अपने .NET एप्लिकेशन को काम करने के लिए IIS के साथ ASP.NET को मैन्युअल रूप से पंजीकृत करना होगा।

विंडोज 7 और उससे पहले के लिए:

  1. एक प्रशासक के रूप में कमांड प्रॉम्प्ट (cmd.exe) चलाएँ।
  2. उपयुक्त .NET फ्रेमवर्क स्थान पर नेविगेट करें। (उदा। C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319)
  3. Aspnet_regiis.exe -i चलाएँ

विंडोज 8 और बाद के लिए:

  1. प्रारंभ मेनू से, "चालू या बंद विंडो सुविधाएँ चालू करें" टाइप करें और पहला परिणाम चुनें।
  2. इंटरनेट सूचना सेवाओं का विस्तार करें: वर्ल्ड वाइड वेब सेवाएँ: अनुप्रयोग विकास सुविधाएँ और यदि आप .NET फ्रेमवर्क 2.0-3.5 पर परियोजनाओं का समर्थन करने की आवश्यकता है तो ASP.NET 4.5 (या ASP.NET 3.5) का चयन करें।
  3. ओके पर क्लिक करें।

2
मैं IIS से पूर्ण IIS से अधिक विकास के लिए माइग्रेट किया गया था और यह वही है जो मेरे लिए निर्धारित है। धन्यवाद!
जिम ब्राउन

1
ऊपर @JimBrown के समान; IIS एक्सप्रेस से माइग्रेट करने के बाद इसने मेरे लिए काम किया।
SolidRegardless

इसने मेरे लिए इसे हल कर दिया। विंडोज 7 पर, विजुअल स्टूडियो 2015 एंट, नई एमवीसी 5 वेबसाइट, आईआईएस एक्सप्रेस से पूर्ण आईआईएस में बदल गई।
ज्योफ गंटर

26

क्या आप वर्चुअल निर्देशिका या एप्लिकेशन में वेब एपीआई ऐप चला रहे हैं?

उदाहरण के लिए: मेरे पास एक ही समस्या थी जब मैंने अपनी परियोजना को डिफ़ॉल्ट वेब साइट> SampleWebAPI के तहत अपने स्थानीय IIS में स्थानांतरित कर दिया था। मेरा मानना ​​है कि यह URLरूटिंग में परिवर्तन के कारण है:

मूल: localhost:3092/api/values
स्थानांतरित: localhost/SampleWebAPI/api/values

यदि आप वेब API प्रोजेक्ट को अपनी वेबसाइट पर स्थानांतरित करते हैं तो यह एक अलग पोर्ट पर काम करने वाली वेबसाइट है।

अतिरिक्त ध्यान दें: मैंने apiअपनी वेबसाइट के भीतर एक आवेदन के उपनाम के रूप में जोड़कर समस्या को और जटिल कर दिया था जो प्रभावी होने का कारण बना URL:

localhost:81/api/api/values - वेबसाइट को खुद की वेबसाइट पर ले जाने के बाद इस पर ध्यान दिया

इसलिए, क्योंकि मैं अपनी वेबसाइट और वेब एपीआई MVC परियोजना स्थल के बीच एक जुदाई बनाए रखने के लिए चाहता था, मैं मार्ग नियमों में बदल global.asaxजाल एपीआई "DefaultAPI के लिए" से api/{controller}/{id}करने के लिए {controller}/{id}और ASP.NET MVC एक Defaultसे {controller}/{id}करने के लिए info/{controller}/{id}


3
hehehe ... मैंने अपने ऐप IISको apiभी नाम दिया था । इसके कारण 2 घंटे से अधिक समय तक यह सभी परीक्षण और त्रुटि डीबगिंग हुई। अपना अनुभव साझा करने के लिए बहुत बहुत धन्यवाद! इसका नाम बदल दिया और अब मैं फिर से व्यापार में वापस आ गया हूं। : डी
लेनियल मैकाफेर्री

धन्यवाद - यह मेरा मुद्दा था! :)
जेएन

मुझे यकीन नहीं है कि जब मैं 8080 पोर्ट के तहत अपनी परियोजना की मेजबानी कर रहा था तो एपीआई कॉल विफल क्यों हो रही थी, बस इसे डिफ़ॉल्ट वेबसाइट के तहत एक आभासी निर्देशिका के रूप में स्थानांतरित किया गया था :)
किरण

14

यह एकमात्र उत्तर है जिसने मेरे लिए काम किया ...

मेरे पास एक समान मुद्दा था ... ऐसा लग रहा था जैसे मैंने क्या किया, कुछ भी पुनर्निर्देशित नहीं हो रहा था और मेरी वैश्विक फ़ाइल को केवल अनदेखा किया जा रहा था। मैंने गंभीरता से माना कि यह जवाब मिलने से पहले ही मैंने इसे खत्म कर दिया। मुझे उम्मीद है कि यह लिंक किसी और की मदद करता है।


निम्न जोड़ने के लिए web.config फ़ाइल ने मेरे लिए काम किया:

<system.webServer>
  <modules>
    <remove name="UrlRoutingModule-4.0" />
    <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
  </modules>
</system.webServer>

system.webServer टैग पहले से ही था, लेकिन मैंने इसमें मॉड्यूल टैग को जोड़ा और फिर मॉड्यूल टैग में टैग हटाए और जोड़े


इस समस्या को 2008 (नहीं R2) सर्वर पर मारो, और यह एकमात्र समाधान था जो मेरे लिए काम करता था। इसके अलावा, मुझे ऐप पूल को "एकीकृत" मोड पर सेट करने के साथ जोड़ना था।
झूमझूम

11

जाँच करने के लिए कुछ बातें:

  1. सुनिश्चित करें कि आपके पास .NET फ्रेमवर्क 4 स्थापित है।
  2. सुनिश्चित करें कि .NET फ्रेमवर्क का संस्करण 4 आपकी वेबसाइट और वर्चुअल निर्देशिका (यदि लागू हो) के लिए चुना गया है।
  3. सुनिश्चित करें कि आपके पास MVC स्थापित है या आपके बिन निर्देशिका में उपयुक्त DLL हैं।
  4. ASP.NET 4.0 वेब सेवा एक्सटेंशन की अनुमति देने की आवश्यकता हो सकती है
  5. एप्लिकेशन को खुद के ऐप पूल में रखें।
  6. सुनिश्चित करें कि निर्देशिका में कम से कम "लिपियों केवल" निष्पादन अनुमतियाँ हैं।

मेरे पास एक ही IIS सर्वर पर 4 अन्य सामान्य वेब एप्लिकेशन चल रहे हैं और वे सभी .net फ्रेमवर्क 4 का उपयोग कर रहे हैं। इसलिए उन 4 बिंदुओं में से किसकी आवश्यकता नहीं है? जब मैंने अपना mvc एप्लिकेशन प्रकाशित किया, तो मैंने जोड़ने योग्य निर्भरताएँ जोड़ दीं और ASP.NET MVC जोड़ दिया, इसलिए यह मेरी बिन निर्देशिका में है
आर्मंड

@Armand लगता है जैसे आपने # 1 किया है। # 2 अभी भी आवश्यक है। परिनियोजित निर्भरताएँ जोड़ते हुए , यदि आपने इसे यहाँ वर्णित किया है: haacked.com/archive/2011/05/25/bin-deploying-asp-net-mvc-3.aspx , ऊपर # 3 का ध्यान रखना चाहिए। # 4 आवश्यक हो सकता है या नहीं भी हो सकता है, हालांकि मेरे पास यह बताने के लिए ज्ञान नहीं है कि यह कब है और इसकी आवश्यकता नहीं है।
जो श्राग

9

मुझे भी ऐसी ही समस्या का समाधान करना पड़ा था। मेरे पास मेरी web.config फ़ाइल में सही सेटिंग्स थीं, लेकिन एकीकृत मोड के बजाय क्लासिक मोड में एप्लिकेशन पूल चला रहा था

स्क्रीन शॉट


7

यह समस्या निम्न के कारण भी हो सकती है

1. वेब में। कॉनफिग

<system.webServer>
     <modules runAllManagedModulesForAllRequests="true" /> 
<system.webServer>

2. सुनिश्चित करें कि सर्वर के बिन फ़ोल्डर में निम्नलिखित उपलब्ध हैं जहां वेब एपीआई तैनात है

  • System.Net.Http

  • System.Net.Http.Formatting

  • System.Web.Http.WebHost

  • System.Web.Http

इन असेंबली को बिन फ़ोल्डर में डिफ़ॉल्ट रूप से कॉपी नहीं किया जाएगा यदि पब्लिश स्टूडियो के माध्यम से प्रकाशित किया जाता है क्योंकि वेब एपीआई पैकेज एनगेट के माध्यम से विकास मशीन में स्थापित किए जाते हैं। फिर भी अगर आप विजुअल स्टूडियो पब्लिश के हिस्से के रूप में उपलब्ध इन फ़ाइलों को प्राप्त करना चाहते हैं तो आपको इन असेंबली के लिए CopyLocal को True पर सेट करने की आवश्यकता है

सतीश कुमार।वी


यदि आपके पास MVC सर्वर पर स्थापित नहीं है, तो DLL की आवश्यकता है। मेरे मामले में जब मैं एपीआई को लागू करने की कोशिश कर रहा था तो मैं एक खाली पृष्ठ देख रहा था। DLL को मैन्युअल रूप से जोड़ना मेरे लिए काम करता है। धन्यवाद!!
विपुल भोजवानी 19

System.Net.Http को मुख्य प्रकाशित फ़ोल्डर में जोड़ने के बाद मेरी समस्या हल हो गई थी, मेरा था Asp.net Core solution
mohas

6

इस आधार पर तो जवाब , मैं सिर्फ परिवर्तन करना पड़ा path="*."करने के लिए path="*"जोड़ा के लिए ExtensionlessUrlHandler-Integrated-4.0में configuration>system.WebServer>handlersमें मेरेweb.config

इससे पहले:

<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

उपरांत:

<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*" verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

बहुत बहुत धन्यवाद ग्रेग, मैं इस बेवकूफ रास्ते के कारण मुझे मारने वाला था = "*।" लेकिन अब, इस दयनीय डॉट को छोड़ने के बाद, सब कुछ पूरी तरह से ठीक काम करता है! आपका बहुत बहुत धन्यवाद!
जूनियर सिल्वा

5

मैं भी इस समस्या में भाग गया। मैंने एप्लिकेशन पूल> एप्लिकेशन पूल नाम पर जाकर समस्या का हल किया और .NET फ्रेमवर्क को संस्करण v.2.0.50727 से v4.0.30319 में बदल दिया।


1
मैंने अपने दम पर इसकी खोज की। अपना उत्तर अपवित्र करना क्योंकि याद करना आसान है। जब मैंने अपने ऐप के लिए एक साइट बनाई, तो IIS ने स्वचालित रूप से मेरे लिए एक ऐप पूल बनाया, .NET v2.0 के लिए सेट !! क्यों क्यों क्यों?? :)
माइक टवेर्न

3

मुझे फ़ाइल प्रकाशन विकल्प "प्रकाशन के दौरान Precompile" को निष्क्रिय करना पड़ा।


और आप ऐसा कहां करते हैं?
vapcguy

1
यह उस डायलॉग पर है जो प्रोजेक्ट को राइट-क्लिक करने और पब्लिश को चुनने पर दिखाई देता है। यह इस
पाकमन

3

Microsoft से आधिकारिक फिक्स है: http://support.microsoft.com/kb/980368

मैं दृढ़ता से उपयोग करने की अनुशंसा नहीं करता <मॉड्यूल runAllManagedModulesForAllRequests = "true">। यह सभी अनुरोधों (यहां तक ​​कि .jpg, .css, .pdf, आदि) को सभी पंजीकृत HTTP मॉड्यूल द्वारा संसाधित किया जाएगा। दो नकारात्मक क्षण हैं: ए) हार्डवेयर संसाधनों पर अतिरिक्त भार; b) संभावित त्रुटियां, चूंकि http मॉड्यूल नए प्रकार की सामग्री को संसाधित करेगा।


1
बहुत बहुत धन्यवाद ! मैंने पूरी तरह से सब कुछ करने की कोशिश की, और यह केवल एक चीज थी जिसने इसे तय किया।
ओरन डेनिसन

यहाँ भी, इस उत्तर को जोड़ने के लिए बहुत बहुत धन्यवाद! मेरे मसले का हल था!
ओक्टावियो गैरबारिनो

2

मुझे विंडोज एज़्योर ट्यूटोरियल का अनुसरण करने के बाद वेब एपीआई से 404 प्रतिक्रियाएं मिलनी शुरू हुईं, जिसने मुझे अपनी परियोजना में एक फ़ाइल "वेबरोल.कैंस" जोड़ने के लिए कहा।

मेरे प्रोजेक्ट से "WebRole.cs" को हटाने के बाद, मेरे वेब एपीआई कॉल ने फिर से काम करना शुरू कर दिया।


इसने मेरे लिए काम किया। मैंने एक वीज़ा तैनाती में एक एज़्योर एप्लिकेशन को माइग्रेट किया और वेबरोल.कैंस की सामग्री पर टिप्पणी करने के बाद, मेरी वेबएपीआई कॉल फिर से काम करना शुरू कर दिया।
स्कॉट

मैंने इस पर एक दिन जरूर बिताया होगा! WebRole.cs पर टिप्पणी करते हुए - आश्चर्य है कि हालांकि क्यों
Igorek

2

कृपया सुनिश्चित करें कि एप्लिकेशन पूल एकीकृत मोड में है
और निम्नलिखित को web.config फ़ाइल में जोड़ें:

<system.webServer>
    .....
    <modules runAllManagedModulesForAllRequests="true" />
    .....
</system.webServer>

2

मेरे मामले में, मुद्दा बस इतना था कि मैं साइट पर पहुंचने का प्रयास कर रहा था

myserver.myintranet.com/mysite

लेकिन IIS में http के लिए बाध्यकारी वेब साइट बंधन में निर्दिष्ट होस्ट नाम नहीं है। यह पहले काम कर चुका था और मुझे नहीं पता कि यह कैसे उड़ा।

एक बार जब मैंने myserver.myintranet.comहोस्ट नाम रखा तो 404 चला गया था।

IIS प्रबंधक में आप बाइंडिंग में जाते हैं ... क्रिया फलक में, फिर होस्ट नाम निर्दिष्ट करने के लिए http बाइंडिंग को संपादित करें।


यहां तक ​​कि मैं भी इसी मुद्दे का सामना कर रहा हूं। और जैसा कि आपने सुझाव दिया था कि मैंने HTTP बंधन में होस्ट नाम की जाँच की है, और यह केवल ठीक से अपडेट किया गया है। लेकिन फिर भी मेरा मुद्दा कायम है। नोट: मैंने अपने API एप्लिकेशन को एक चाइल्ड एप्लिकेशन के रूप में होस्ट किया है। कृपया सुझाव दें कि क्या इस पर किसी का विचार है। ex: "sample.example.com" मेरा मुख्य अनुप्रयोग है और इस नमूने के तहत "नमूना.example.com/myAPI/" के रूप में एक एपीआई बनाया गया है
कृष्ण मणि


1

एक ही मुद्दा था, जब वेब एपीआई नियंत्रक के लिए 404 की प्रतिक्रिया आईआईएस से सेवा की है, लेकिन सब कुछ VS2010 से ठीक काम किया। उपरोक्त किसी भी समाधान ने मेरे लिए काम नहीं किया। आखिरकार मैंने पाया कि समस्या यह थी कि हमने आवेदन के लिए WSE 3.0 समर्थन जोड़ा और Microsoft.Web.Services3 dll अनुप्रयोग / बिन निर्देशिका में गायब था। अजीब, लेकिन डीएल की नकल करने के बाद, रूट मैपिंग ने काम करना शुरू कर दिया।


1

मेरे लिए समस्या यह थी कि नेट साइट को .NET 2.0 ऐप पूल का उपयोग करने के लिए कॉन्फ़िगर किया गया था, और उस साइट के भीतर मेरा आवेदन .NET 4.5 था।

मैंने .NET 4 ऐप पूल के साथ एक नई साइट बनाई और उस के मूल में अपना आवेदन रखा - और यह ठीक काम किया।


1

मैंने इसके साथ ही संघर्ष किया। मेरा सटीक मुद्दा यह था कि मेरे पास एक ASMX वेब सेवा थी, जब मैंने एक वेब विधि में एक पैरामीटर दर्ज किया और उसका परीक्षण किया, तो यह मुझे 404 देगी। विशेष विधि ने अतीत में ठीक काम किया था और इसे बदला नहीं गया था, केवल फिर से प्रकाशित किया गया। तब मैं यहां आया और सभी पोस्ट किए गए उत्तरों की कोशिश की और कुछ भी मदद नहीं की।

मेरा अंतिम समाधान? मुझे पता है कि यह कठोर है, लेकिन मैंने अभी एक नया विज़ुअल स्टूडियो समाधान और वेब प्रोजेक्ट बनाया है। चयनित MVC, फिर मैंने एक "Add"> "New Item" किया, उसके अंतर्गत "Visual C #"> "Web" और "Web Service (ASMX)" का चयन किया। मैंने अपने पुराने कोड के पीछे के सभी कोड को कॉपी किया, फिर मैंने अपने नए प्रोजेक्ट में नई फ़ाइल को दिए गए नामस्थान पर ध्यान दिया, फिर अपने सभी पुराने कोड को नए कोड-बैक फ़ाइल में नए प्रोजेक्ट में पेस्ट कर दिया और नाम स्थान डाल दिया यह क्या था वापस करने के लिए।

फिर मैंने अपने प्रोजेक्ट में अपने फ़ोल्डर्स बनाए, जो मैंने "Add"> "New Folder" करने के लिए Visual Studio का उपयोग करने से पहले किया था, फिर Windows Explorer का उपयोग करके अपने दूसरे प्रोजेक्ट से फ़ोल्डर्स में अपनी फ़ाइलों में वापस कॉपी किया, फिर प्रत्येक फ़ोल्डर पर राइट-क्लिक किया Visual Studio और "Add"> "मौजूदा आइटम ..." किया और उन फ़ोल्डरों में आइटमों को मेरे नए प्रोजेक्ट के Visual Studio फ़ोल्डरों में खींच लिया। मैंने अपने सभी .NET असेंबली को फिर से संदर्भित किया, दोनों परियोजनाएं खुली ताकि मैं तुलना कर सकूं कि मैंने किन लोगों को संदर्भित किया है, पहले (कई थे)। मुझे अपनी नई परियोजना को थोड़ा अलग नाम देना पड़ा - मूल रूप से मैंने "MyWebApp" के बजाय "GeneralWebApp" के साथ कुछ किया, उदाहरण के लिए - इसलिए मुझे उस नाम को बदलने के लिए अपने पूरे समाधान में एक "रिप्लेसमेंट ऑल" करना पड़ा,

फिर मैंने प्रोजेक्ट पर एक "रीबिल्ड ऑल" किया, फिर इसे "प्ले" बटन विजुअल स्टूडियो के साथ शुरू किया, जब मुझे इसे सही तरीके से बनाने के लिए मिला। यह ठीक काम किया। इसलिए मैंने इसे प्रकाशित किया, और सर्वर पर सब कुछ ठीक था जहां मैंने इसे प्रकाशित किया, जब मैंने इसे वहां से चलाया। मेरे पास कोई स्पष्टीकरण नहीं है कि क्या हुआ, लेकिन यह है कि मुझे इसके माध्यम से कैसे मिला। यह देखने के लिए सिर्फ एक बुरा परीक्षण नहीं है कि क्या कुछ विज़ुअल स्टूडियो कर रहा है, इसने इसे गड़बड़ कर दिया है।


1

यदि आप IIS में केवल बिन फ़ोल्डर रखते हैं (परियोजना के निर्माण के बाद), तो यह समस्या भी होगी। इस स्थिति में आपको VisualStudio का उपयोग करके प्रोजेक्ट को प्रकाशित करना चाहिए , फिर प्रकाशित फ़ोल्डर को IIS में रखें।


0

आप किस तरह का HTTP अनुरोध कर रहे हैं?

यह थोड़ा-सा बाएँ उत्तर का उत्तर है लेकिन क्या आपने 404 के लिए IIS डिफ़ॉल्ट त्रुटि पृष्ठ को हटाने की कोशिश की है ताकि यह जांच सके कि आपका एपीआई वास्तव में क्या है?

मेरे पास एक मुद्दा था जिसके तहत मैं एक 404 को वापस करने के लिए नियंत्रक विधि चाहता था जब मैंने इसे गलत आईडी पोस्ट किया। मैंने पाया कि मुझे हमेशा अपने एपीआई से HTTP प्रतिक्रिया के बजाय IIS 404 "फ़ाइल या निर्देशिका नहीं मिली" पृष्ठ मिल रहा था। डिफ़ॉल्ट 404 त्रुटि पृष्ठ को निकालने से समस्या हल हो गई।

विभिन्न मुद्दे लेकिन आप कभी नहीं जानते कि यह मदद कर सकता है;)


0

Web.config फ़ाइल में कॉन्फ़िगरेशन का यह टुकड़ा मेरी मदद कर सकता है: system.webServer सेक्शन में:

      <security>
          <requestFiltering>
              <verbs applyToWebDAV="true">
                  <remove verb="PUT" />
                  <add verb="PUT" allowed="true" />
                  <remove verb="DELETE" />
                  <add verb="DELETE" allowed="true" />
                  <remove verb="PATCH" />
                  <add verb="PATCH" allowed="true" />
              </verbs>
          </requestFiltering>
      </security>      

0

मुझे हाल ही में अपने सभी वेब एपी 2 मार्गों / नियंत्रकों के साथ 404 त्रुटि नहीं मिली। इसलिए मैं वास्तविक सर्वर पर गया और होस्टनाम के बजाय लोकलहोस्ट का उपयोग करके ब्राउज़ करने की कोशिश की और "404.7 नहीं मिला - फ़ाइल एक्सटेंशन को अस्वीकार करने के लिए अनुरोध फ़िल्टरिंग मॉड्यूल कॉन्फ़िगर किया गया"।

यह SO पोस्ट मुझे इसे हल करने में मदद करती है।


0

यह मेरे लिए हल हो गया, जब मैं UrlRoutModule-4.0 के लिए चेकबॉक्स सक्षम करता हूं:

IIS प्रबंधक> मॉड्यूल> चुनें UrlRoutModule-4.0> मॉड्यूल संपादित करें> चेक बॉक्स की जांच करें "केवल ASP.NET अनुप्रयोगों या प्रबंधित हैंडलर के लिए अनुरोध करें"।


0

मेरे पास एक ही मुद्दा था: विजुअल स्टूडियो 2013 के साथ एक नई स्थापित मशीन पर, वेब एप परियोजना IISExpress के तहत काम कर रही थी, लेकिन स्थानीय IIS के लिए नहीं। मैंने वह सब कुछ करने की कोशिश की जो मुझे मिल सकता था, लेकिन अंत में समस्या वेब एपीआई के साथ आवश्यक नहीं थी, लेकिन एमवीसी के साथ: यहां तक ​​कि इसे स्थापित किया गया था, कोई एमवीसी परियोजना नहीं चल रही थी।

मेरे लिए जो काम किया गया था वह IIS (ADD / REMOVE विंडोज फीचर्स से) को अनइंस्टॉल करना था, फिर इसे फिर से इंस्टॉल करना और फिर aspnet_regiis -i चलाना। शायद यह किसी और की मदद करता है।


0

मैंने बहुत समय बिताया है कि बहुत सी चीजों की कोशिश कर रहा हूं, अंत में मुझे एहसास हुआ कि मैं अपने वेब ऐप को साइट्स / डिफॉल्ट वेब साइट्स में नहीं जोड़ रहा हूं, लेकिन एक अन्य वेबसाइट में दूसरे पोर्ट से जुड़ा हुआ है। जाहिर है पोर्ट 80 पर लोकलहोस्ट की कोशिश 404 देगी।


0

मैं कुछ नहीं करता, बस इस टैग को web.config में जोड़ देता हूं, इसका काम इस मुद्दे पर निम्न बिंदुओं में से एक है

  1. MVC या asp.net प्रपत्रों का उपयोग करके उसी प्रोजेक्ट में वेब Api का उपयोग करें

  2. GlobalConfiguration.Configure (WebApiConfig.Register) के रूप में Global.asax में RouteConfig और WebApiConfig का उपयोग करें; RouteConfig.RegisterRoutes (RouteTable.Routes);

  3. 2 उद्देश्यों के लिए रूटकॉन्फिग का उपयोग करें, asp.net एमवीसी रूटिंग के लिए फ्रेंडली और एमईवी रूटिंग के साथ उपयोग करना

हम इस टैग का उपयोग web.config में करते हैं, यह काम करेगा।

<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
   .........................
</modules>
</system.webServer>

0

वेब API और .Net कोर वेब एपीआई के साथ एक ही मुद्दे में भाग गया। डिबगिंग के दौरान वीएस 2017 में ठीक काम किया, लेकिन जब आईआईएस 7.5 में प्रकाशित किया गया तो 404 वापस आ गया। मेरे लिए समाधान यह था कि मैं साइट बनाने के तरीके को बदलूं। एक वेब साइट की जड़ (राइट क्लिक साइट्स द्वारा बनाई गई ... वेब साइट जोड़ें) को प्रकाशित करने के बजाय, मुझे एक एप्लिकेशन बनाना था (वेब ​​साइट पर राइट क्लिक करके बनाया गया ... एप्लिकेशन जोड़ें) और उस फ़ोल्डर में प्रकाशित करें। ध्यान दें कि कोर संस्करण के लिए, मुझे एप्लिकेशन पूल .NET फ्रेमवर्क संस्करण सेटिंग को "नो मैनेजेड कोड" में बदलना होगा।


0

मेरे लिए समाधान मेरी web.config फ़ाइल से निम्न पंक्तियों को हटा रहा था :

<dependentAssembly>
    <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.1.1.3" newVersion="4.1.1.3" />
</dependentAssembly>
<dependentAssembly>
    <assemblyIdentity name="Microsoft.IdentityModel.Tokens" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.5.0.0" newVersion="5.5.0.0" />
</dependentAssembly>

मैंने देखा कि वीएस ने उन्हें स्वचालित रूप से जोड़ा था, निश्चित नहीं कि क्यों


0

इस webconfg को आज़माएं .. "NewsApi.dll" को अपने मुख्य dll से बदलें!


<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\NewsApi.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
    </system.webServer>
  </location>
</configuration>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.