按照使用ServiceStack的教程,我正在尝试编译以下代码:
public class AppHost : AppHostBase
{
public AppHost() : base("Protein Tracker Web Services", typeof(HelloService).Assembly) { }
public override void Configure(Funq.Container container)
{
SetConfig(new EndpointHostConfig { ServiceStackHandlerFactoryPath = "api" });
}
}
这给了我以下错误:
找不到类型或命名空间名称“ EndpointHostConfig ”(您是否缺少using指令或程序集引用?)
我尝试添加建议:
using ServiceStack.WebHost.Endpoints;
给我以下错误:
名称空间“ServiceStack”中不存在类型或命名空间名称“ WebHost ”(您是否缺少程序集引用?)
答案 0 :(得分:7)
您可能正在引用刚刚发布到测试阶段的v4 ServiceStack框架。对名称空间和类进行了大量的重构和重构,这是冲突发生的地方。
These release notes for v4讨论了从第3版到第4版对ServiceStack所做的重大更改。
与您最相关的部分是:
EndpointHostConfig现在是HostConfig,仅限于配置。
许多教程仍然适用于v3,即OpenSource,这是我怀疑你关注的内容。
您应该在nu-get安装中包含版本号。如:
PM> Install-Package ServiceStack -Version 3.9.71
这将为您提供ServiceStack的最新OpenSource版本(3.9.71)。或者,请参阅v4文档。
v3 Documentation - Relevant for your tutorials
v4 (Latest - commercial)
希望这有帮助。
答案 1 :(得分:3)
对于那些可能跟随过时的教程/示例,但希望使用新的v4 API:
使用了
ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory
在Web.config的处理程序映射中已重命名为justServiceStack.HttpHandlerFactory
这需要快速更新我们服务的Web.config:
<handlers>
<add path="*" name="ServiceStack.Factory" type="ServiceStack.HttpHandlerFactory, ServiceStack" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true" />
</handlers>
答案 2 :(得分:2)
我得到了同样的错误,这是因为服务堆栈中的版本
只需改变:
EndpointHostConfig 到 HostConfig
ServiceStackHandlerFactoryPath 到 HandlerFactoryPath
希望它有所帮助。