سؤال

لقد قرأت هذا بريد وأردت استخدام طريقة controlerextensions.redirectToAction. لكن لدي System.Security.VerificeException الذي يقول: اكتب الوسيطة [myController type] ينتهك قيد المعلمة النوع "T".

تم إعلان وحدة التحكم الخاصة بي على النحو التالي:

   public class ProductsSearchController : Controller
   {
        ...
   }

ساعدني من فضلك. كما حاولت تنزيل أحدث مكتبة MVCContrib من هنا. لم يساعدني ذلك.

لقد لاحظت حقيقة مثيرة للاهتمام. لدي هذا الاستثناء فقط عند الاتصال من اختبارات الوحدة. ولكن لا يوجد استثناء عند استخدامه من موقع الويب. ومع ذلك يبدو أنه لا يعمل بشكل صحيح. عندما أقوم بتمرير كائن إلى الإجراء في التعبير مثل هذا:

this.RedirectToAction(x => x.Index(filter))

انها مجرد استدعاء. tostring من هذا الكائن! وأحصل على عنوان URL مثل هذا:

ProductsSearch؟ Filter = Webshop.findermodel.filters.productsfilter

ما المشكله؟

هل كانت مفيدة؟

المحلول

لقد كنت أواجه هذه المشكلة.

كنت أستخدم MVCContrib الإصدار 2.0.95.0 إلى جانب System.Web.MVC الإصدار 4.0.30319.

كانت المشكلة أن MVCContrib تشير إلى إصدار سابق من System.Web.MVC.

إذا كنت تستخدم إصدارًا أقدم من MVCContrib مع MVC 2 ، فيجب أن يكون ذلك كافيًا لتنزيل أحدث إصدار من MVCContrib. إذا كنت تستخدم .NET 4 و MVC 3 ، فستحتاج إلى تحديث ملف App.Config لمشروع اختبار الوحدة الخاص بك (قد تضطر إلى إضافة واحدة) بما يلي:-

<configuration>
...

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

....
</configuration>

ضع في اعتبارك أنك قد تحتاج إلى تغيير أرقام الإصدار إذا كنت تستخدم إصدارًا مختلفًا من MVC. (على سبيل المثال وقت هذا التحرير ، ستحتاج إلى استخدامه oldVersion="1.0.0.0-5.1.0.0" و newVersion="5.2.0.0").

قد تحتاج أيضًا إلى إضافة هذا إلى مشروع الويب الخاص بك. إذا كنت تحصل على الاستثناء فقط في مشروع الاختبار الخاص بك ، فمن المحتمل أن يكون هذا القسم موجودًا بالفعل وهو صحيح في الويب الخاص بك. يمكنك نسخ ولصقها من هناك.

إذا كنت تستخدم تحليل التعليمات البرمجية ، فستحتاج أيضًا إلى رؤية إعادة توجيه التجميع وتحليل الكود من أجل احترام إعادة التوجيه الملزمة.

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