Jul*_*anR 6 .net c# servicestack
我们一直在使用ServiceStack的旧版本(3.9.8)一段时间了,我决定尝试升级到最新版本(3.9.70),虽然它是一个干净,没有麻烦的包升级 - 一切都编译和运行 - 现在每个服务URL都返回"未找到请求处理程序"404结果.
过去工作的URL的示例:
http://somewebserver.com/services/servicestack/jsv/syncreply/getuser
我们使用旧的API(IService<T>)并且不使用REST路由或任何类型的东西.
ServiceStack应用程序在ASP.NET MVC 3 Web应用程序中运行,该应用程序位于URL http://somewebserver.com/management/controller/action上.它似乎没有干扰,因为它被配置为忽略ServiceStack路由:
routes.IgnoreRoute("servicestack/{*pathInfo}");
Run Code Online (Sandbox Code Playgroud)
ServiceStack代码肯定正在运行,因为访问http://somewebserver.com/services/servicestack会将我重定向到元数据页面,该页面有效.
我尝试过以下步骤:
但它似乎没有什么区别.
我在配置中更改了尝试使其工作:
1)删除了system.webServer/handlers中的旧行
<add path="servicestack" name="ServiceStack.Factory" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true" />
Run Code Online (Sandbox Code Playgroud)
2)添加了此位置部分:
<location path="servicestack">
<system.web>
<httpHandlers>
<add path="*" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*"/>
</httpHandlers>
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<add path="*" name="ServiceStack.Factory" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true" />
</handlers>
</system.webServer>
</location>
Run Code Online (Sandbox Code Playgroud)
3)在应用程序主机设置中添加了此项:
this.Config.ServiceStackHandlerFactoryPath = "servicestack";
Run Code Online (Sandbox Code Playgroud)
对于POST和GET,调用URL都失败了.
这一切都在IIS 8下运行.
我很想知道这里发生了什么,所以我们终于可以升级并在2013年生活:)
显然,解决方案在于我们启用 ServiceStack 功能的方式。我自己没有进行更改,但修复如下:
从 AppHost 中删除:
this.Config.EnableFeatures = Feature.Metadata | Feature.Jsv | Feature.Json;
this.Config.ServiceStackHandlerFactoryPath = "servicestack";
Run Code Online (Sandbox Code Playgroud)
取而代之:
Feature disableFeatures = Feature.Soap;
SetConfig(new EndpointHostConfig
{
ServiceStackHandlerFactoryPath = "servicestack",
EnableFeatures = Feature.All.Remove(disableFeatures),
DebugMode = false,
WriteErrorsToResponse = false,
DefaultContentType = ContentType.Jsv,
AllowJsonpRequests = false
});
Run Code Online (Sandbox Code Playgroud)