3

カスタム CredentialsAuthProvider でサービスを提供する IIS 7.5 で ServiceStack アプリを実行しています/auth/credentials

Visual Studio からは正常に動作しますが、運用サーバー (IIS 7.5 も) にインストールすると、へのすべての要求に対して 404 が応答します/auth/credentials。REST エンドポイントの提供に問題はなく、プロバイダーのスーパークラスを BasicAuthProvider に変更すると認証が機能しますが、基本認証の代わりにフォームを使用したいと考えています。認証エンドポイントを正しく提供するにはどうすればよいですか?

これは私の Web.config がどのように見えるかです:

<?xml version="1.0" encoding="UTF-8"?>

<configuration>
  <location path="auth">
    <system.web>
      <customErrors mode="Off"/>
      <httpHandlers>
        <add path="*" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*"/>
      </httpHandlers>
    </system.web>
  </location>
  <location path="rest">
    <system.web>
      <httpHandlers>
        <add path="*" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" />
      </httpHandlers>
    </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>

  <!-- Required for MONO -->
  <system.web>
    <httpHandlers>
      <add path="rest*" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*"/>
      <add path="auth*" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*"/>
    </httpHandlers>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
        <httpErrors errorMode="DetailedLocalOnly">
            <remove statusCode="403" subStatusCode="-1" />
            <error statusCode="403" prefixLanguageFilePath="" path="https://nearme.solarcity.com" responseMode="Redirect" />
        </httpErrors>
    <!--<modules runAllManagedModulesForAllRequests="true">
      <remove name="WebDAVModule" />
    </modules>-->
    <!--uncomment this to stop IIS 7.5 from blocking PUT and DELETE-->
  </system.webServer>
</configuration>
4

1 に答える 1

3

構成で間違った仮定をしています。

ServiceStack をホストできるのは、ルート パスまたはカスタム パスのいずれかである1 つのパス*でのみです。カスタム パスは、一般的に慣例により、/apiまたは/servicestack選択した任意の名前にすることができます。HelloWorld チュートリアルでは、サポートされている両方のオプションの構成例を示しています

認証は、要求 DTO またはサービスのいずれかを [Authenticate] 属性で装飾することによって実施されます。必要に応じて、属性をカスタム基本クラスに追加することもできますAuthenticatedServiceBase。これにより、すべてのサブクラスにも認証が必要になります。

于 2012-09-07T04:39:47.183 に答える