2013-02-25 7 views
5

Ho scritto un'API utilizzando ServiceStack per recuperare i documenti dalla mia raccolta documenti di SharePoint e sto utilizzando MVC per produrre il risultato.ServiceStack.Factor ha un cattivo modulo "ManagedPipelineHandler" nel suo elenco moduli

Tuttavia quando provo e faccio funzionare la mia applicazione sto ricevendo un errore HTTP:

500.21 ServiceStack.Factor has a bad module "ManagedPipelineHandler" in its module list error

Sto facendo funzionare la mia applicazione in modalità classica in IIS come ho bisogno di utilizzare la rappresentazione per l'autenticazione con il server SharePoint.

Sembra esserci una difficoltà nell'utilizzo di ServiceStack in modalità classica.

Come posso risolvere questo errore?

Spero che abbia senso.

Qualsiasi aiuto sarà apprezzato

Ecco la mia configurazione:

<system.webServer> 
      <modules runAllManagedModulesForAllRequests="true" /> 
      <validation validateIntegratedModeConfiguration="false" /> 
      <handlers> 
       <add path="*" name="ServiceStack.Factory" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" preCondition="classicMode" resourceType="Unspecified" allowPathInfo="true" /> 
      </handlers> 
     </system.webServer> 

Aggiornamento:

esecuzione la mia applicazione come altro utente sulla mia macchina dev funziona bene il problema sembra essere un differenza tra IIS e il server di sviluppo ASP.NET

+0

Qualche idea per questo? –

+0

Ho anche provato i suggerimenti in questo post: http://stackoverflow.com/questions/13030418/servicestack-with-iis-7-5 Ma senza fortuna. –

risposta

4

Non penso che la modalità classica possa gestire le configurazioni del percorso. Come indicato qui - http://www.asp.net/mvc/tutorials/older-versions/deployment/using-asp-net-mvc-with-different-versions-of-iis-cs - È necessario eseguire una configurazione aggiuntiva quando si utilizza IIS 7.0 in modalità classica o utilizzare un'estensione di file che viene mappata al framework ASP.NET (aspx, axd, ashx).

ho potuto ottenere modalità classica lavorare contro IIS 7 utilizzando i seguenti configurazioni

web.config (parziale e utilizzando preCondition = "integratedMode"):

<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    <validation validateIntegratedModeConfiguration="false" /> 
    <handlers> 
     <add path="servicestack*" name="ServiceStack.Factory" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" 
      verb="*" preCondition="integratedMode" /> 
    </handlers> 
</system.webServer> 

E aggiunti aspx a miei percorsi al fine di colpire ASP.NET (i immagino si potrebbe noi le altre soluzioni elencate nel link qui sopra) così

Routes 
.Add<Hello>("/hello.aspx") 
.Add<Hello>("/hello.aspx/{Name}"); 

posso fare richieste di http://localhost/hello.aspx and http://localhost/hello.aspx?name=Test

Update 1

Si scopre posso rimuovere tutti gli elementi di IIS 7 (<system.webServer>) durante l'esecuzione in modalità classica. Il mio intero web.config è sotto. Qual è l'attributo del percorso per l'elemento <httpHandlers>? Forse stai ricevendo un 404 perché il percorso è diverso?

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
     <httpHandlers> 
      <add path="servicestack*" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*"/> 
     </httpHandlers> 
     <compilation debug="true"/> 
    </system.web> 
    <system.webServer> 
     <validation validateIntegratedModeConfiguration="false"/> 
    </system.webServer> 
</configuration> 

Commento Risposte:

Pertanto, è questo funzionalmente equivalente al percorso = "api *", come nel tuo esempio?

No.Vedi qui: http://msdn.microsoft.com/en-us/library/b6x6shw7%28v=vs.100%29.aspx Dai un'occhiata alla Sezione 2 qui: http://www.servicestack.net/ServiceStack.Hello/ L'elemento <httpHandler> ha l'attributo path per un percorso personalizzato.

Inoltre, utilizzare IIS Express come server di sviluppo in Visual Studio. Dovresti essere in grado di simulare i problemi della modalità classica di IIS 7 che non si verificano all'interno del server di sviluppo standard. http://www.microsoft.com/web/gallery/install.aspx?appid=IISExpress

+0

Grazie per il vostro aiuto. Abbiamo già il routing "cablato", per così dire scuse per non averlo chiarito. –

+0

Grazie per il vostro aiuto. Abbiamo già il routing "cablato", per così dire scuse per non averlo chiarito. La tua configurazione ** è ** interessante, tuttavia. Perché stai usando una 'precondizione' di' integratedMode' nella modalità classica? Abbiamo provato questo e otteniamo un 404 - interessante, ServiceStack ci reindirizza alla pagina 'metadata' - che fallisce in quanto il percorso/metadati non è supportato in modalità classica. Forse c'è un'opportunità qui? Grazie per il vostro aiuto, quindi :) _Sorry per la ripetizione, SO si rifiuta di permetterci di mantenere il commento aperto come si ricerca._ –

+0

Aggiornato la mia risposta in base ai nuovi risultati. – paaschpa