2012-09-07 90 views
3

我在IIS 7.5上運行的應用程序ServiceStack,與/auth/credentials服務定製CredentialsAuthProvider。ServiceStack證書身份驗證的端點提供了404

它可以從Visual Studio很好,但是當我在生產服務器上安裝它(也IIS 7.5),它響應404的所有請求/auth/credentials。它沒有任何麻煩的服務端點REST,如果我改變供應商的超類BasicAuthProvider認證工作,但我想用的形式,而不是基本身份驗證。我如何才能正確地提供auth端點?

這是我的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> 

回答

3

你在你的配置做出錯誤的假設。

只能在一個單一路徑這是在根目錄路徑*或一般是按照慣例要麼/api/servicestack但也可以是您選擇的任何名稱自定義路徑主機ServiceStack。 HelloWorld教程shows an example configuration for both supported options

認證過程裝飾任一方請求DTO或服務與[身份驗證]屬性執行。如果您願意,您還可以將該屬性添加到自定義基類,例如AuthenticatedServiceBase這將確保所有的子類都需要認證。

+2

+1,嘗試建立ServiceStack應用程序在使用MonoDevelop的,而不是Visual Studio中的。它並不隱藏這樣的東西。 –

+0

謝謝!我將ServiceStack設置爲從根路徑主持,調整了一些端點,現在一切正常。 – Phssthpok