سؤال

لقد قمت مؤخرا بتنزيل بيتا 2 من VS2010 وبدأ اللعب مع ASP.NET MVC2. تم التطوير الأولي مع Casini، ولكن الآن أردت تشغيل التطبيق من IIS 7.5 (أقوم بتشغيل Windows 7). لقد قمت بتثبيت توافق قاعدة التعريف IIS6 وأنا أركض VS2010 كمسؤول حتى أتمكن من استخدام زر "إنشاء دليل الظاهري" من علامة التبويب "الويب" في إعدادات المشروع. هذا إنشاء إدخال تطبيق الويب في IIS، لكنه لا يعمل.

عندما أذهب إلى الصفحة الرئيسية (http: // localhost / mymvcapp /) أحصل على خطأ HTTP 403. عندما أذهب مباشرة إلى واحدة من الصفحات الفرعية (http: // localhost / mymvcapp / الرئيسية /) أحصل على http 404.

لذلك أعتقد لسبب ما لا يعمل توجيه URL. لقد قمت بالفعل بإضافة URLRouting كوحدة ومعالج إلى Web.config. في عمليات البحث الخاصة بي عرضة كحل لبعض المشاكل السامية. ولكن بالنسبة لي لا يزال هذا لا يعمل.

الجزء المثير للاهتمام من بلدي Web.config loke مثل هذا:

<system.web>
  <compilation debug="true" targetFramework="4.0">
    <assemblies>
      <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    </assemblies>
  </compilation>
  <authentication mode="Forms">
    <forms loginUrl="~/Account/LogOn" timeout="2880" />
  </authentication>
  <membership>
    <providers>
      <clear />
      <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
    </providers>
  </membership>
  <profile>
    <providers>
      <clear />
      <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
    </providers>
  </profile>
  <roleManager enabled="false">
    <providers>
      <clear />
      <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
      <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
    </providers>
  </roleManager>
  <pages>
    <namespaces>
      <add namespace="System.Web.Mvc" />
      <add namespace="System.Web.Mvc.Ajax" />
      <add namespace="System.Web.Mvc.Html" />
      <add namespace="System.Web.Routing" />
    </namespaces>
  </pages>
  <httpHandlers>
    <add verb="*" path="*.mvc" validate="false" type="System.Web.Mvc.MvcHttpHandler" />
  </httpHandlers>
  <customErrors mode="Off" />
</system.web>
<system.webServer>
  <validation validateIntegratedModeConfiguration="false" />
  <modules runAllManagedModulesForAllRequests="true" >
    <remove name="UrlRoutingModule"/>
    <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  </modules>
  <handlers>
    <remove name="MvcHttpHandler" />
    <add name="MvcHttpHandler" preCondition="integratedMode" verb="*" path="*.mvc" type="System.Web.Mvc.MvcHttpHandler" />
    <add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd" type="System.Web.HttpForbiddenHandler, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </handlers>
  <httpErrors errorMode="Detailed" />
</system.webServer>
هل كانت مفيدة؟

المحلول 2

بعد إجراء المزيد من التدقيق والمحاولة التي لاحظتها في مربع حوار "تحويل ميزات Windows أو إيقاف تشغيل"، فقد كانت "أخطاء HTTP" و "إعادة توجيه HTTP" مفقودة. هذا غريب لأنه بقدر ما أستطيع أن أتذكر أنه تم تثبيت هذا تلقائيا بواسطة برنامج تثبيت Microsoft Web Platform. في أي حال، بدا "إعادة توجيه HTTP" وكأنها ميزة الحاجة إليها عند العمل مع MVC. لذلك بعد أن قمت بتثبيت ذلك يبدو أن كل شيء يبدو يعمل تماما.

نصائح أخرى

لقد تلقيت هذه المشكلة، وللسوء الحظ، فإن الإصلاح هنا لم يعمل بالنسبة لي.

ماذا كان العمل يركض هذا:

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -ir

في نافذة الأوامر ... يعمل مثل حلم الآن!

(لذلك، غير مثبت ASP.NET في IIS افتراضيا عند تثبيت VS2010؟)

أضف هذا إلى web.config ملف:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
    <!-- rest of config -->
</system.webServer>

هذا ألم يفعل هذا يدويا. لكن بالتأكيد قابلة للتنفيذفي لقد قمت بإدارة ذلك وخصمه في هذا الدليل خطوة بخطوة إضافة مشروع MVC 2 إلى حل أشكال الويب Exisitng هنا. نأمل أن يساعد هذا ... استغرق الأمر مني أعمار للعمل على الرغم من أن جميع إعدادات التكوين ويبدو أن هناك عددا قليلا جدا من الموارد حول هذا الموضوع.

يرجى ملاحظة أنه يجب عليك تشغيل ASPNET_REGIIS.EXE -IR كمسؤول، يبدو واضحا ولكن عندما تعبت من تجربة الأشياء دون نجاح لحل ذلك، يمكنك تمريرها.

فقط أن أقول شكرا جزيلا على جميع الاستجابات، بعد عدة ساعات في محاولة أشياء مختلفة، أخيرا يمكنني الحصول على تطبيق MVC 2 في IIS.

ما الذي ساعدني في استخدام خط أنابيب الكلاسيكية ل AppPool بدلا من دمجها:alt text

كنت أستكب تطبيق MVC2 على جهاز الكمبيوتر المحمول الخاص بي Windows 7، باستخدام .NET Beta 2 و VS 2010 Beta 2. عندما قمت بتثبيت بيئة التطوير بأكملها على Windows Server 2008، بما في ذلك VS، بنيت المحلول وركضه، عملت التوجيه بشكل جيد.

كانت الخطوة التالية هي إنشاء خادم إنتاج على Windows Server 2008، والتي قمت بنشرتها .NET 4.0 Beta ولكن لا شيء من الأشياء الأخرى التي جاءت مع تنزيل Beta VS 2010. تحت هذا التكوين، لم يعمل التوجيه أبدا حتى تمكن إعادة توجيه HTTP كما هو مبين بواسطة Jeroen.

آمل أن يساعد هذا شخصا قد يكون في نفس القارب.

أردت فقط أن نلاحظ أنني كنت أواجه نفس المشكلة مع 403 و 404s ولكن مضيفا system.webServer وجميع العناصر من system.web/pages/namespaces العقدة حلها بالنسبة لي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top