public override void Load() { Bind<IProductsRepository>() .To<SqlProductsRepository>() .WithConstructorArgument("connectionString", ConfigurationManager.ConnectionStrings["AppDb"].ConnectionString); }
men det giver mig denne fejl. Der er ikke defineret en konstruktør uden parametre for dette objekt. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.MissingMethodException: Der er ikke defineret en konstruktør uden parametre for dette objekt.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[MissingMethodException: Der er ikke defineret en konstruktør uden parametre for dette objekt.] System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) +0 System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache) +98 System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache) +241 System.Activator.CreateInstance(Type type, Boolean nonPublic) +69 System.Activator.CreateInstance(Type type) +6 System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType) +491
[InvalidOperationException: An error occurred when trying to create a controller of type 'Store.WebUI.Controllers.ProductsController'. Make sure that the controller has a parameterless public constructor.] System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType) +628 System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext, String controllerName) +204 System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& controller, IControllerFactory& factory) +193 System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state) +160 System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext, AsyncCallback callback, Object state) +80 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) +45 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +8841400 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +184
Min 'Store.WebUI.Controllers.ProductsController' ser sådan her ud. using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using Store.Domain.Abstract; using Store.Domain.Concrete;
namespace Store.WebUI.Controllers { public class ProductsController : Controller { private IProductsRepository productsRepository; public ProductsController (IProductsRepository productsRepository) { this.productsRepository = productsRepository; } public ViewResult List() { return View(productsRepository.Products.ToList()); } } }
Fejlen får jeg når jeg køre test på min PC nu, altså Lokalt miljø, ang. den anden "<add name="AppDb" connectionString="Data Source=|DataDirectory|\SQLEXPRESS;Persist Security Info=True"/>" var bare for at vide det når jeg flytter det hele over på en server, når det køre som det skal.
Databasen er en SQLserver .dbo fil nitro-pc\sqlexpress.Store.dbo
Det der henter dataen er fra denne fil NinjectControllerFactory.cs public class NinjectControllerFactory : DefaultControllerFactory { private IKernel kernel = new StandardKernel(new StoreServices()); protected override IController GetControllerInstance(RequestContext context, Type controllerType) { if (controllerType == null) return null; return (IController)kernel.Get(controllerType); } // Configures how abstract service types are mapped to concrete implementations private class StoreServices : NinjectModule { public override void Load() { Bind<IProductsRepository>().To<SqlProductsRepository>().WithConstructorArgument("connectionString", ConfigurationManager.ConnectionStrings["AppDb"].ConnectionString); } } }
Fejlen kommer ang. min Bind linje fra denne fil NinjectControllerFactory.cs der siger den et eller andet med "new" og mærkerer linjen.
Fejlen er: System.NullReferenceException was unhandled by user code Message=Objektreferencen er ikke indstillet til en forekomst af et objekt. Source=Store.WebUI StackTrace: ved Store.WebUI.Infrastructure.NinjectControllerFactory.StoreServices.Load() i C:\Users\Nitro\Documents\Visual Studio 2010\Projects\Store\Store.WebUI\Infrastructure\NinjectControllerFactory.cs:linje 32 ved Ninject.Modules.NinjectModule.OnLoad(IKernel kernel) ved Ninject.KernelBase.Load(IEnumerable`1 modules) ved Ninject.KernelBase..ctor(IComponentContainer components, INinjectSettings settings, INinjectModule[] modules) ved Ninject.KernelBase..ctor(INinjectModule[] modules) ved Ninject.StandardKernel..ctor(INinjectModule[] modules) ved Store.WebUI.Infrastructure.NinjectControllerFactory..ctor() i C:\Users\Nitro\Documents\Visual Studio 2010\Projects\Store\Store.WebUI\Infrastructure\NinjectControllerFactory.cs:linje 18 ved Store.WebUI.MvcApplication.Application_Start() i C:\Users\Nitro\Documents\Visual Studio 2010\Projects\Store\Store.WebUI\Global.asax.cs:linje 35 InnerException:
LINJE KODER NinjectControllerFactory.cs:linje 32 Bind<IProductsRepository>().To<SqlProductsRepository>().WithConstructorArgument("connectionString", ConfigurationManager.ConnectionStrings["AppDb"].ConnectionString);
Databasen er en SQLserver .dbo fil nitro-pc\sqlexpress.Store.dbo
Der foregår noget mystisk her.
SQLServer bruger ikke .dbo filer.
Hvis du har en SQLServer Express så vil den typisk have : - et server navn som DINPC\SQLEXPRESS - data for en eller flere databaser ligge i en .MDF file - log for en eller flere databaser ligge i en .LDF file
Ang. fejl 2 den kommer de første gange jeg køre projektet efter de gange så hvis jeg køre det igen (uden at have ændret i koden) så kommer fejl 1.
Fatter det ikke, har kigget mig MVC projekt igennem nu 10 gange og kan ikke finde nogle database i den og det findes ikke engang en App_Data mappe.
Når jeg kigger i server explore delen i Visual Studio så kan jeg se databasen som SQLEXPRESS.Store.dbo kan ikke se nogle sti på den.
Og det har virket, men i den bog jeg går efter "Apress Pro ASP NET MVC 2 Framework 2nd Edition" så blev der nævnt "Ninject's web site offers additional "extensions"" så satte jeg projektet op efter det og alle assem. er fundet og køre.
jeg fatter det ikke, når men Arne jeg vender tilbage i morgen formiddag.
tænkte jeg nok, når jeg køre projektet nu så kommer denne fejl
An attempt to attach an auto-named database for file C:\Users\Nitro\Documents\Visual Studio 2010\Projects\StoreTest\Store.WebUI\App_Data\SQLEXPRESS.Store.mdf failed. A database with the same name exists, or specified file cannot be opened, or it is located on UNC share.
det er ang. denne linje i min ProductsController.cs { return View(productsRepository.Products.ToList()); }
Hvis jeg laver den om til <connectionStrings> <add name="AppDb" connectionString="Data Source=.\SQLEXPRESS;Integrated Security=True" providerName="System.Data.SqlClient" /> </connectionStrings>
Så smider den en nu fejl ang. min tabel der hedder Products
jeg denne fejl nu. System.Data.SqlClient.SqlException was unhandled by user code Message=Invalid object name 'Products'. Source=.Net SqlClient Data Provider ErrorCode=-2146232060 Class=16 LineNumber=1 Number=208 Procedure="" Server=.\SQLEXPRESS State=1 StackTrace: ved System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) ved System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) ved System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() ved System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) ved System.Data.SqlClient.SqlDataReader.ConsumeMetaData() ved System.Data.SqlClient.SqlDataReader.get_MetaData() ved System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) ved System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) ved System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) ved System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) ved System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) ved System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) ved System.Data.Common.DbCommand.ExecuteReader() ved System.Data.Linq.SqlClient.SqlProvider.Execute(Expression query, QueryInfo queryInfo, IObjectReaderFactory factory, Object[] parentArgs, Object[] userArgs, ICompiledSubQuery[] subQueries, Object lastResult) ved System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(Expression query, QueryInfo[] queryInfos, IObjectReaderFactory factory, Object[] userArguments, ICompiledSubQuery[] subQueries) ved System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query) ved System.Data.Linq.Table`1.GetEnumerator() ved System.Data.Linq.Table`1.System.Collections.Generic.IEnumerable<TEntity>.GetEnumerator() ved System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) ved System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) ved Store.WebUI.Controllers.ProductsController.List() i C:\Users\Nitro\Documents\Visual Studio 2010\Projects\StoreTest\Store.WebUI\Controllers\ProductsController.cs:linje 20 ved lambda_method(Closure , ControllerBase , Object[] ) ved System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) ved System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) ved System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) ved System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClassd.<InvokeActionMethodWithFilters>b__a() ved System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) InnerException:
pinligt......Arne jeg fandt problemet, det har stået der siden første tråd.........men database var i Store.Domain altså App_Data mappen, fejlen omtaler jo Store.WebUI, efter jeg så det flyttede jeg mappen App_Data til det nye sted og hvad tror du der skete....ja for fan*** det virkede.
Men hvorfor skal App_Data ind i WebUI og ikke i Domain i MVC !??
Hvis du er for VS centric kan det godt blive forvirrende.
VS viser filerne på en bestemt måde og deployer dem på en bestemt måde.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.