404 after upgrading ServiceStack from 3.9.8 to 3.9.70 (new API)

We have been using the obsolete version (3.9.8) of ServiceStack for a long time, and I decided to try upgrading to the latest version (3.9.70), and although it was clean, without updating the problem package, everything compiles and starts - each service URL now returns the result "The processor for the request was not found" 404.

Example URL that was used to work:

http://somewebserver.com/services/servicestack/jsv/syncreply/getuser

We use the old API ( IService<T> ) and do not use REST routes or anything like that.

The ServiceStack application runs inside the ASP.NET MVC 3 web application, which lives at http://somewebserver.com/management/controller/action . This does not seem to interfere, as it is configured to ignore the ServiceStack route:

 routes.IgnoreRoute("servicestack/{*pathInfo}"); 

ServiceStack code definitely works, since going to http://somewebserver.com/services/servicestack redirects me to a metadata page that works.

I tried the following steps:

https://github.com/ServiceStack/ServiceStack/wiki/Run-servicestack-side-by-side-with-another-web-framework

But that doesn't seem to matter.

What I changed in the config to try to make this work:

1) Removed this old line in the system.webServer file / handlers

 <add path="servicestack" name="ServiceStack.Factory" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true" /> 

2) Added this location section:

 <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> 

3) Added this to the application host setup:

 this.Config.ServiceStackHandlerFactoryPath = "servicestack"; 

Calling a URL does not work for both POST and the GET that was used to work.

Everything works under IIS 8.

I would like to know what is happening here, so we can finally update and live in 2013 :)

+6
source share
1 answer

Apparently, the fix was how we turned on the ServiceStack features. I have not made changes myself, but these are corrections:

Removed from AppHost:

 this.Config.EnableFeatures = Feature.Metadata | Feature.Jsv | Feature.Json; this.Config.ServiceStackHandlerFactoryPath = "servicestack"; 

Replaced by:

 Feature disableFeatures = Feature.Soap; SetConfig(new EndpointHostConfig { ServiceStackHandlerFactoryPath = "servicestack", EnableFeatures = Feature.All.Remove(disableFeatures), DebugMode = false, WriteErrorsToResponse = false, DefaultContentType = ContentType.Jsv, AllowJsonpRequests = false }); 
+1
source

Source: https://habr.com/ru/post/958181/


All Articles