如何忽略与自托管ServiceStack路线(How to ignore a route with

2019-07-03 15:39发布

我目前的工作,我们有一个自托管ServiceStack层运行的解决方案,但问题是,我不断收到错误,当我从浏览器访问和浏览器尝试获取图标。 至于我可以看有没有忽略一个特定的路线运行自托管时的选项?

我想象像

Routes.Ignore("favicon*")

有点像

Routes.Add<Foo>("/foo")

在我APPHOST配置方法

Answer 1:

不同于MVC它使用的HTTP模块来处理和劫持的所有请求,ServiceStack内置于ASP.NET的原始IHttpHandler接口。 这意味着ServiceStack必须处理匹配ServiceStack处理路径(例如任何请求//api通过返回的IHttpHandler并不能忽略他们就像他们在MVC做)。

但是,您可以捕捉并通过注册的处理程序处理所有未处理的请求IAppHost.CatchAllHandlers ,如:

appHost.CatchAllHandlers.Add((httpMethod, pathInfo, filePath) => {
   if (pathInfo.StartsWith("favicon"))
      return new NotFoundHttpHandler();
});


Answer 2:

在我的web.config我喜欢有这样的事情

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

这样的扩展名的所有文件通过IIS得到处理,意味着你不必去所有的方式,通过ASPNET管道服务器了404这也意味着你不登录404的负载在servicestack应用。



Answer 3:

只是要追加@ antonydenyer的答案。 他的解决方案似乎结合owin与servicestack3时也工作。

<handlers> <add path="auth/*" name="Microsoft.Owin.Host.SystemWeb" type="Microsoft.Owin.Host.SystemWeb.OwinHttpHandler, Microsoft.Owin.Host.SystemWeb" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true" /> <add path="*" name="ServiceStack.Factory" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true" /> </handlers>

这里SS是处理除/ AUTH每个请求。 验证使用owin映射到Identityserver3。



文章来源: How to ignore a route with self-hosted ServiceStack