2013-02-25 71 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

相关问题