我们的代码中存在下一个问题: 我们有使用ASP.NET Web窗体框架的Web应用程序。在Areas中,我们有API区域。这使用ASP.NET MVC框架,我们希望使用ServiceStack与Api一起使用。但是我们的ServiceStack不能在RouteAttribute的路径中使用一个单词,而可以使用两个单词。
例如:
1)此变体不起作用
localhost / api / hello
[Route("/hello" )]
public class HelloWorld : IReturn<HelloResponse>
{
}
2)此变体有效
localhost / api / hello / world
[Route("/hello/{Name}") ]
public class HelloWorld : IReturn<HelloResponse>
{
}
3)在Web.config中,我们有位置路径,该路径通过localhost / api url设置将可以使用ServiceStack.Factory。
<location path="webship/api">
<system.web>
<httpHandlers>
<add path="*" type="ServiceStack.HttpHandlerFactory, ServiceStack" verb="*" />
</httpHandlers>
</system.web>
<!-- Required for IIS 7.0 -->
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<add path="*" name="ServiceStack.Factory" type="ServiceStack.HttpHandlerFactory, ServiceStack" verb="*"
preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true" />
</handlers>
</system.webServer>
当我们的应用程序进入第一选项(localhost / api / hello)时,我们会遇到 404错误
伙计们,请帮助解决此问题
答案 0 :(得分:0)
请参阅Running ServiceStack side-by-side with MVC的文档,即,如果您希望将ServiceStack托管在/api
上,则Web.config应该如下所示:
<location path="api">
<system.web>
<httpHandlers>
<add path="*" type="ServiceStack.HttpHandlerFactory, ServiceStack" verb="*"/>
</httpHandlers>
</system.web>
<!-- Required for IIS 7.0 -->
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<add path="*" name="ServiceStack.Factory"
type="ServiceStack.HttpHandlerFactory, ServiceStack"
verb="*" preCondition="integratedMode"
resourceType="Unspecified" allowPathInfo="true" />
</handlers>
</system.webServer>
</location>
您还需要在AppHost Configure()中设置HandlerFactoryPath
:
public override void Configure(Container container)
{
SetConfig(new HostConfig { HandlerFactoryPath = "api" });
}