2013-02-25 19 views
5

我已經編寫了一個使用ServiceStack從我的SharePoint文檔庫中檢索文檔的API,並且使用MVC輸出結果。ServiceStack.Factor在其模塊列表中有一個錯誤的模塊「ManagedPipelineHandler」

然而,當我嘗試運行我的應用我收到一個HTTP錯誤:

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

我正在我在IIS經典模式的應用程序,因爲我需要使用模擬與我的SharePoint服務器進行身份驗證。

在經典模式下使用ServiceStack似乎有困難。

如何解決此錯誤?

我希望這是有道理的。

任何幫助將不勝感激

這裏是我的配置:

<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> 

更新:

運行我的應用我的開發機器上的其他用戶正常工作的問題似乎是一個IIS和ASP.NET開發服務器之間的區別

+0

對此有何想法? – 2013-02-26 16:15:43

+0

我也試過這個帖子中的建議 - http://stackoverflow.com/questions/13030418/servicestack-with-iis-7-5但沒有運氣。 – 2013-02-28 10:16:17

回答

4

我不認爲經典模式可以處理路由配置。如此處所述 - http://www.asp.net/mvc/tutorials/older-versions/deployment/using-asp-net-mvc-with-different-versions-of-iis-cs - 在經典模式下使用IIS 7.0或使用映射到ASP.NET框架(aspx,axd,ashx)的文件擴展名時,您確實需要執行其他配置。

我是能夠得到經典模式針對IIS 7工作使用下面的配置

的web.config(局部的和使用前提= 「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> 

並且我增加的.aspx到我爲了打ASP.NET路由(我可以想象你能我們以上以及在鏈接中列出的其他解決方案)

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

我可以請求http://localhost/hello.aspx and http://localhost/hello.aspx?name=Test

更新1

原來在經典模式下運行時,我可以刪除所有的IIS 7(<system.webServer>)元素。下面是我的整個web.config。 <httpHandlers>元素的路徑屬性是什麼?也許你正在得到一個404,因爲路徑是不同的?

<?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> 

評論答案:

因此,這是功能上等同於PATH = 「API *」 作爲你的榜樣?

沒有。請參閱:http://msdn.microsoft.com/en-us/library/b6x6shw7%28v=vs.100%29.aspx 請看第2節:http://www.servicestack.net/ServiceStack.Hello/<httpHandler>元素具有自定義路徑的路徑屬性。

另外,在Visual Studio中使用IIS Express作爲您的開發服務器。您應該能夠模擬標準開發服務器中不存在的IIS 7經典模式問題。 http://www.microsoft.com/web/gallery/install.aspx?appid=IISExpress

+0

感謝您的幫助。我們已經有了「有線連接」的路由,可以這麼說,我們對沒有明確表示道歉。 – 2013-03-05 09:15:50

+0

感謝您的幫助。我們已經有了「有線連接」的路由,可以這麼說,我們對沒有明確表示道歉。 但是,您的配置**很有趣。爲什麼在經典模式下使用'integratedMode'的'precondition'? 我們已經嘗試過了,我們得到了一個404 - 有趣的是,ServiceStack將我們重定向到了「元數據」頁面 - 由於經典模式中不支持/ metadata路徑,因此失敗。 也許這裏有機會嗎? 謝謝你的幫助herefar :) _Sorry重複,SO拒絕讓我們保持評論的開放,因爲我們研究._ – 2013-03-05 09:41:34

+0

更新我的答案根據新的結果。 – paaschpa 2013-03-05 15:36:35

相關問題