نمایش نتایج 1 تا 8 از 8

نام تاپیک: عدم پاسح webApi هنگام استفاده از لایه Service

  1. #1
    کاربر دائمی
    تاریخ عضویت
    مهر 1390
    محل زندگی
    rayancode.ir
    پست
    1,559

    Question عدم پاسح webApi هنگام استفاده از لایه Service

    سلام.
    من تازه کار با WebApi رو شروع کردم.
    دارم یک مقاله رو می خونم و طبق اون کار رو یاد میگیرم.
    من در ابتدا از یک کنترلر استفاده کردم بصورت زیر

    public class EmployeController : ApiController
    {
    public string[] Get()
    {
    return new string[]
    {
    "Hello",
    "Nabi"
    };


    }
    }


    و جواب مناسب رو گرفتم.
    اما وقتی میام و یک پوشه service می سازم و و کد ها رو وارد می کنم وقتی می خوام جواب بگیرم به ارور زیر بر می خورم.
    ممنون میشم جوابی بدین.




    public class ContactRepository
    {
    private const string CashKey = "ContactStrore";


    public ContactRepository()
    {
    var ctx = HttpContext.Current;


    if (ctx != null)
    {
    if (ctx.Cache[CashKey] == null)
    {
    var contacts = new Contact[]
    {
    new Contact
    {
    Id = 1, Name = "Glenn Block"
    },
    new Contact
    {
    Id = 2, Name = "Dan Roth"
    }
    };


    ctx.Cache[CashKey] = contacts;
    }
    }


    }


    public Contact[] GetallContacts()
    {
    var ctx = HttpContext.Current;


    if (ctx != null)
    {
    return (Contact[])ctx.Cache[CashKey];
    }


    return new Contact[]
    {
    new Contact
    {
    Id = 0,
    Name = "Placeholder"
    }
    };


    }


    public bool SaveContact(Contact contact)
    {
    var ctx = HttpContext.Current;
    if (ctx != null)
    {
    try
    {
    var currentData = ((Contact[])ctx.Cache[CashKey]).ToList();
    currentData.Add(contact);
    ctx.Cache[CashKey] = currentData.ToArray();
    return true;
    }
    catch (Exception ex)
    {
    Console.WriteLine(ex.ToString());
    return false;
    }
    }
    return false;
    }
    }




    این هم کنترلر API من


    private ContactRepository _contact;


    public ContactController(ContactRepository contact)
    {
    _contact = contact;
    }


    public Contact[] Get()
    {
    return this._contact.GetallContacts();
    }


    کد HTML:
    This XML file does not appear to have any style information associated with it. The document tree is shown below.      <Error><Message>An error has occurred.</Message><ExceptionMessage>An error occurred when trying to create a controller of type 'ContactController'. Make sure that the controller has a parameterless public constructor.</ExceptionMessage><ExceptionType>System.InvalidOperationException</ExceptionType><StackTrace>   at System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create(HttpRequestMessage request, HttpControllerDescriptor controllerDescriptor, Type controllerType)   at System.Web.Http.Controllers.HttpControllerDescriptor.CreateController(HttpRequestMessage request)   at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__1.MoveNext()</StackTrace><InnerException><Message>An error has occurred.</Message><ExceptionMessage>Type 'TestApi.Web.Controllers.ContactController' does not have a default constructor</ExceptionMessage><ExceptionType>System.ArgumentException</ExceptionType><StackTrace>   at System.Linq.Expressions.Expression.New(Type type)   at System.Web.Http.Internal.TypeActivator.Create[TBase](Type instanceType)   at System.Web.Http.Dispatcher.DefaultHttpControllerActivator.GetInstanceOrActivator(HttpRequestMessage request, Type controllerType, Func`1& activator)   at System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create(HttpRequestMessage request, HttpControllerDescriptor controllerDescriptor, Type controllerType)</StackTrace></InnerException></Error>

  2. #2
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1388
    پست
    69

    نقل قول: عدم پاسح webApi هنگام استفاده از لایه Service

    سلام دوست عزیز مشکل در تزریق وابستگی Repository شما می باشد این روش تزریق کاملا اشتباه می باشد تزریق وابستگی اولا توسط interface ها صورت می گیرد در ثانی توسط کتابخانه های مشخصی مثل autofac

  3. #3
    کاربر دائمی
    تاریخ عضویت
    مهر 1390
    محل زندگی
    rayancode.ir
    پست
    1,559

    نقل قول: عدم پاسح webApi هنگام استفاده از لایه Service

    ممنون.
    اما به خاطر این نیست. من همیشه دارم از تزریق وابستگی با اینترفیس و ninject کار می کنم. این کد هام طبق مثال کتاب اما نمی دونم چرا جواب نمیده.
    موفق باشید

  4. #4
    بنیان گذار Barnamenevis آواتار مهدی کرامتی
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    کرج، گلشهر
    سن
    46
    پست
    6,379

    نقل قول: عدم پاسح webApi هنگام استفاده از لایه Service

    زبون بسته خودش داره میگه مشکلت چیه:
    An error occurred when trying to create a controller of type 'ContactController'. Make sure that the controller has a parameterless public constructor

    داره میگه شما Constructor بدون پارامتر باید داشته باشید (که در کلاس فوق ندارید).

  5. #5
    کاربر دائمی
    تاریخ عضویت
    مهر 1390
    محل زندگی
    rayancode.ir
    پست
    1,559

    نقل قول: عدم پاسح webApi هنگام استفاده از لایه Service

    واقعا ممنون استاد. دقت نکرده بودم

    این خط باید اضافه میشد


    public ContactController()
    {
    this._contact = new ContactRepository();
    }

  6. #6
    کاربر دائمی آواتار salar IT man
    تاریخ عضویت
    بهمن 1392
    محل زندگی
    ارومیه-صمدزاده
    پست
    261

    نقل قول: عدم پاسح webApi هنگام استفاده از لایه Service

    نقل قول نوشته شده توسط r4hgozar مشاهده تاپیک
    ممنون.
    اما به خاطر این نیست. من همیشه دارم از تزریق وابستگی با اینترفیس و ninject کار می کنم. این کد هام طبق مثال کتاب اما نمی دونم چرا جواب نمیده.
    موفق باشید
    مشکل در تزریق وابستگی ای است که شما انجام داده اید. درست است که متن خطا میگه باید سازنده بدون پارامتر داشته باشید ولی در اصل اگر هدف شما تزریق وابستگی بود شما به این هدف نرسیدید و همینطور که مشخص است صورت مسله را عوض کردید.

  7. #7

    نقل قول: عدم پاسح webApi هنگام استفاده از لایه Service

    Ninject در نسخه های جدیدش برای تزریق وابستگی درون Web Api نیاز به دو افزونه Ninject Web Api و Ninject WebApi WebHost داره (اگر جستجو کنید در Nuget هست) اینها رو به پروژه اضافه کنید.

  8. #8
    کاربر دائمی
    تاریخ عضویت
    مهر 1390
    محل زندگی
    rayancode.ir
    پست
    1,559

    نقل قول: عدم پاسح webApi هنگام استفاده از لایه Service

    نقل قول نوشته شده توسط hakim22 مشاهده تاپیک
    Ninject در نسخه های جدیدش برای تزریق وابستگی درون Web Api نیاز به دو افزونه Ninject Web Api و Ninject WebApi WebHost داره (اگر جستجو کنید در Nuget هست) اینها رو به پروژه اضافه کنید.
    سلام.
    Ninject Web Api رو می دونستم و نصب کردم اما Ninject WebApi WebHost رو نمی دونستم.
    ممنون.

تاپیک های مشابه

  1. سوال: عدم نمایش اطلاعات هنگام استفاده از switch
    نوشته شده توسط css-man در بخش JavaScript و Framework های مبتنی بر آن
    پاسخ: 1
    آخرین پست: سه شنبه 18 بهمن 1390, 02:51 صبح
  2. مبتدی: عدم نمایش گزارش هنگام استفاده از stored procedure
    نوشته شده توسط solaleh در بخش C#‎‎
    پاسخ: 2
    آخرین پست: شنبه 06 شهریور 1389, 20:13 عصر
  3. مبتدی: عدم نمایش گزارش هنگام استفاده از stored procedure
    نوشته شده توسط solaleh در بخش گزارش سازی با Crystal Report
    پاسخ: 0
    آخرین پست: جمعه 05 شهریور 1389, 14:13 عصر
  4. عدم اجرای برنامه هنگام استفاده از relation
    نوشته شده توسط s++ 68-87 در بخش C#‎‎
    پاسخ: 2
    آخرین پست: پنج شنبه 15 بهمن 1388, 14:54 عصر
  5. سوال: عدم نمایش صحیح متون فارسی هنگام استفاده از تابع htmlentities
    نوشته شده توسط Jason.Bourne در بخش PHP
    پاسخ: 5
    آخرین پست: چهارشنبه 30 مرداد 1387, 00:59 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •