我正在关注http://www.servicestack.net/ServiceStack.Hello/的服务堆栈“Hello World”教程。但是,当我尝试启动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();
}
}
但它似乎永远不会被召唤。 从主页编译示例项目工作正常 - 但我想按照主页中的示例。 任何想法如何解决这个问题?
答案 0 :(得分:2)
我删除了我的测试项目并再次尝试了教程。
创建Global.asax文件时,我删除了整个类,并在此文件中创建了另一个类Global。似乎Application_Start从未在这个类中被调用过。
答案 1 :(得分:1)
您可能已经猜到的问题是appHost.Init()尚未运行。尝试将其包装在try / catch中并记录可能已抛出的任何错误。
答案 2 :(得分:1)
我们遇到了同样的问题,并通过在扩展的ApplicationPool设置中将“激活32位应用程序”设置为true来解决它。 (对不起,只有一个德语Windows,所以设置名称是粗略的猜测)
答案 3 :(得分:0)
我花了一些时间来弄清楚我做错了导致这个问题......
这件事发生在我身上,因为我不小心将Global.asax文件拖到我项目的子文件夹中。
答案 4 :(得分:0)
我发现此错误是由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();
}