我在使用ServiceStack在IIS6中使用HTTPS时遇到问题,我似乎无法找到有关设置它的任何文档。 目前我有一个类似的端点设置 - http://example.com/api.ashx。当我浏览到这个时,我得到了有用的ServiceStack生成页面,它解释了http://example.com/api.ashx/metadata提供的API。 当我浏览https://example.com/api.ashx(注意https)时,我会收到此错误消息 -
>'/'应用程序中的服务器错误。无法找到该资源。 描述:HTTP 404.您正在寻找的资源(或其中一个 依赖项)可能已被删除,其名称已更改,或者是 暂时不可用。请查看以下网址并制作 确保它拼写正确。请求的URL:/api.ashx
我在web.config中设置了以下内容(例如此处 - http://www.servicestack.net/ServiceStack.Hello/) -
<!-- ServiceStack: Required to host at: /api.ashx -->
<location path="api.ashx">
<system.web>
<httpHandlers>
<add path="*" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*"/>
</httpHandlers>
</system.web>
在我的本地Windows 7机箱上运行IIS7,它运行正常,但测试和实时环境仍在使用IIS6,我无法在那里工作。
使用https时,其他常规aspx页面正常工作。
我很感激任何能够推动我朝着正确方向前进的人!
答案 0 :(得分:9)
IIS 6的问题在于IIS 6.0请求管道无法识别没有ASP.NET扩展的路径,例如.aspx未传递给ASP.NET isapi hander。因此,通常有2个选项可以实现此目的,因此您可以在IIS 6上运行ServiceStack:
将Web.Config中的servicestack路径从“*”更改为“servicestack.ashx”
&LT;&的System.Web GT;
&LT; HttpHandlers的&GT; &lt; add path =“servicestack.ashx”type =“ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory,ServiceStack”verb =“*”/&gt; &LT; / HttpHandlers的&GT;
&LT; /system.web>
为虚拟目录添加通配符映射,以将所有未处理的请求传递给ASP.NET: 按照以下步骤使用IIS 6.0创建通配符脚本映射:
答案 1 :(得分:1)
mythz回答对我不起作用。
我通过使用servicestack配置向web.config添加位置标记来实现它。 我发现servicestack使用了path =“*” - 但是接受了很多请求(Episerver)但是解决了这个问题:
<location path="UniqueTag">
<system.web>
<httpHandlers>
<add path="*" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" />
</httpHandlers>
</system.web>
</location>
然后使用UniqueTag为所有路径添加前缀:
[Route("/UniqueTag/DeletePost/{Id}", Verbs = "POST")]
但请注意,mythz的答案中的选项2可能也是必需的,因为它是我们解决方案中的默认设置。