Учебник по Hello World в стеке сервисов: исключение EndpointHost.Config имеет значение null - PullRequest
4 голосов
/ 22 сентября 2011

Я слежу за учебником по стеку сервисов "Hello World" из http://www.servicestack.net/ServiceStack.Hello/. Но когда я пытаюсь запустить приложение asp.net, он говорит: «Значение не может быть нулевым. Имя параметра: EndpointHost.Config».

Полный текст исключения:

[ArgumentNullException: Der Wert darf nicht NULL sein.
Parametername: EndpointHost.Config]

[ConfigurationErrorsException: ServiceStack: AppHost does not exist or has not been initialized. Make sure you have created an AppHost and started it with 'new AppHost().Init();' in your Global.asax Application_Start()]
   ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory..cctor() in C:\src\ServiceStack\src\ServiceStack\WebHost.EndPoints\ServiceStackHttpHandlerFactory.cs:45

[TypeInitializationException: Der Typeninitialisierer für "ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory" hat eine Ausnahme verursacht.]

[TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht.]
   System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck) +0
   System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache) +86
   System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache) +230
   System.Activator.CreateInstance(Type type, Boolean nonPublic) +67
   System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) +1051
   System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) +111
   System.Web.Configuration.HttpHandlerAction.Create() +57
   System.Web.Configuration.HandlerFactoryCache..ctor(HttpHandlerAction mapping) +19
   System.Web.HttpApplication.GetFactory(HttpHandlerAction mapping) +96
   System.Web.HttpApplication.MapHttpHandler(HttpContext context, String requestType, VirtualPath path, String pathTranslated, Boolean useAppConfig) +125
   System.Web.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +93
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155

Мой глобальный класс:

public class Global : System.Web.HttpApplication
    {
        /// Web Service Singleton AppHost
        public class InfoAppHost : AppHostBase
        {
            //Tell Service Stack the name of your application and where to find your web services
            public InfoAppHost()
                : base("Services", typeof(InfoService).Assembly) { }

            public override void Configure(Funq.Container container) { }
        }

        protected void Application_Start(object sender, EventArgs e)
        {
            //Initialize your application
            var appHost = new InfoAppHost();
            appHost.Init();
        }
    }

Но, кажется, никогда не звонят. Компиляция примера проекта с домашней страницы работает нормально, но я бы хотел последовать примеру с домашней страницы. Есть идеи, как решить эту проблему?

Ответы [ 5 ]

2 голосов
/ 22 сентября 2011

Я удалил свой тестовый проект и попробовал учебник еще раз.

При создании файла Global.asax я удалил весь класс и сделал в этом файле другой класс Global.Кажется, Application_Start никогда не вызывали в этом классе.

1 голос
/ 18 декабря 2013

У нас возникла та же проблема, и мы решили ее, установив для параметра «Активировать 32-разрядные приложения» значение true в расширенных настройках ApplicationPool. (извините, у вас только немецкая Windows, так что названия настроек - приблизительные)

1 голос
/ 24 сентября 2011

Проблема, как вы уже догадались, в том, что appHost.Init () не запустился. Попробуйте обернуть его в try / catch и записать все ошибки, которые могли быть выданы.

0 голосов
/ 04 октября 2013

Я обнаружил, что эта ошибка вызвана WebApiConfig. Пример использует ServiceStack и не нуждается в ASP.NET Web API. Эта строка должна быть закомментирована в файле Gloabal.asax.cs.

    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        // ** comment out ** WebApiConfig.Register(GlobalConfiguration.Configuration);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);

        new ProteinTrackerAppHost().Init();
    }
0 голосов
/ 04 апреля 2013

Мне потребовалось некоторое время, чтобы понять, что я делал неправильно, чтобы вызвать эту проблему ...

это случилось со мной, потому что я случайно перетащил файл Global.asax в подпапку в моем проекте.

...