6

次の構成があります。

<location path="services">
  <system.web>
    <httpHandlers>
      <add path="*" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" />
    </httpHandlers>
    <authorization>
      <allow users="*"/>
    </authorization>
  </system.web>
  <!-- Required for IIS 7.0 -->
  <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>

<system.webServer />要素内ではなく別のセクションを追加するとlocation、ServiceStack はすべてのリクエストに対して 404 を返します。それを削除すると、すべてが再び機能します。

応答の例を次に示します。

HTTP/1.1 404 が見つかりません
キャッシュ制御: プライベート
コンテンツ タイプ: テキスト/プレーン。文字セット=utf-8
サーバー: Microsoft-IIS/7.5
X-Powered-By: ServiceStack/3.926 Win32NT/.NET
X-AspNet バージョン: 4.0.30319
X-Powered-By: ASP.NET
日付: 2012 年 11 月 19 日 (月) 23:15:46 GMT
コンテンツの長さ: 1528

リクエストのハンドラが見つかりません:


Request.ApplicationPath: /MyWebApp.Web.UI
Request.CurrentExecutionFilePath: /MyWebApp.Web.UI/services/echo/
Request.FilePath: /MyWebApp.Web.UI/services/echo/
Request.Http メソッド: GET
Request.MapPath('~'): D:\Lib\MyWebApp\2013\MyWebApp\MyWebApp.Web.UI
Request.Path: /MyWebApp.Web.UI/services/echo/
Request.PathInfo:
Request.ResolvedPathInfo: /services/echo
Request.PhysicalPath: D:\Lib\MyWebApp\2013\MyWebApp\MyWebApp.Web.UI\services\echo\
Request.PhysicalApplicationPath: D:\Lib\MyWebApp\2013\MyWebApp\MyWebApp.Web.UI\
Request.QueryString:
Request.RawUrl: /MyWebApp.Web.UI/services/echo/
Request.Url.AbsoluteUri: http://localhost/MyWebApp.Web.UI/services/echo/
Request.Url.AbsolutePath: /MyWebApp.Web.UI/services/echo/
Request.Url.Fragment:
Request.Url.Host: ローカルホスト
Request.Url.LocalPath: /MyWebApp.Web.UI/services/echo/
Request.Url.Port: 80
Request.Url.クエリ:
Request.Url.Scheme: http
Request.Url.Segments: System.String[]
App.IsIntegratedPipeline: True
App.WebHostPhysicalPath: D:\Lib\MyWebApp\2013\MyWebApp\MyWebApp.Web.UI
App.WebHostRootFileNames: [global.asax,global.asax.cs,header.html,list.html,login.html,MyWebApp.web.ui.csproj,MyWebApp.web.ui.csproj.user,packages.config,web .config,bin,humanresources,js,obj,properties,styles,_sgbak]
App.DefaultHandler: DefaultHttpHandler
App.DebugLastHandlerArgs: GET|/MyWebApp.Web.UI/services/echo/|D:\Lib\MyWebApp\2013\MyWebApp\MyWebApp.Web.UI\services\echo\

別のsystem.webServerセクションを持つことはできませんか?そこに IIS URL 書き換えルールを追加したいと思います。

4

1 に答える 1

4

余分なsystem.webServer宣言は、Web.Config からのホストされたパスの ServiceStack の自動推論に干渉している可能性があります。

AppHost.Configure() などでパスを手動で設定して、それが役立つかどうかを確認できます。

SetConfig(new HostConfig {
    HandlerFactoryPath = "services",
});
于 2012-11-19T23:32:30.590 に答える