7

現在、セルフホストのServiceStackレイヤーを実行しているソリューションに取り組んでいますが、問題は、ブラウザーからアクセスしたときにエラーが発生し続け、ブラウザーがファビコンを取得しようとすることです。私が見る限り、セルフホストを実行しているときに特定のルートを無視するオプションはありませんか?

私は次のようなものを想像したでしょう

Routes.Ignore("favicon*")

少し似ています

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

AppHostConfigureメソッドで

4

3 に答える 3

5

私の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によって処理され、404をサーバー化するためにaspnetパイプラインを完全に通過する必要がなくなります。また、サービススタックアプリケーションに404の負荷を記録しないことも意味します。

于 2013-05-24T11:11:55.763 に答える
3

Httpモジュールを使用してすべての要求を処理およびハイジャックするMVCとは異なり、ServiceStackはASP.NETのrawIHttpHandlerインターフェイス上に構築されています。つまり、ServiceStackはIHttpHandlerを返すことでServiceStackハンドラーパス(/または)に一致するすべてのリクエストを処理する必要があり、MVCの場合のようにそれらを無視することはできません。/api

ただし、次のようにハンドラーを登録することで、未処理のすべての要求をキャッチIAppHost.CatchAllHandlersして処理できます。

appHost.CatchAllHandlers.Add((httpMethod, pathInfo, filePath) => {
   if (pathInfo.StartsWith("favicon"))
      return new NotFoundHttpHandler();
});
于 2012-11-07T18:01:24.357 に答える
0

@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を除くすべての要求を処理しています。Authはowinを使用してIdentityserver3にマップされます。

于 2015-07-31T19:19:41.030 に答える