无法通过HTTPS使ServiceStack在IIS6中工作

Fra*_*tis 7 .net rest https iis-6 servicestack

我在使用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>
Run Code Online (Sandbox Code Playgroud)

在我的本地Windows 7机箱上,我正在运行IIS7,它工作正常,但测试和实时环境仍在使用IIS6,我无法让它在那里工作.

使用https时,其他常规aspx页面正常工作.

我很感激任何能够推动我朝着正确方向前进的人!

myt*_*thz 9

IIS 6的问题是IIS 6.0请求管道无法识别没有ASP.NET扩展的路径,例如.aspx没有传递给ASP.NET isapi hander.因此,通常有2个选项可以实现此目的,因此您可以让ServiceStack在IIS 6上运行:

  1. 将Web.Config中的servicestack路径从"*"更改为"servicestack.ashx"

    在<system.web>

    <httpHandlers> <add path ="servicestack.ashx"type ="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory,ServiceStack"verb ="*"/> </ httpHandlers>

    </system.web>

  2. 为虚拟目录添加通配符映射,以将所有未处理的请求传递给ASP.NET:按照以下步骤使用IIS 6.0创建通配符脚本映射:

    1. 右键单击网站,然后选择"属性"
    2. 选择"主目录"选项卡
    3. 单击"配置"按钮
    4. 选择Mappings选项卡
    5. 单击Insert按钮(参见图4)
    6. 将aspnet_isapi.dll的路径粘贴到可执行文件字段中(您可以从.aspx文件的脚本映射中复制此路径)
    7. 取消选中标记为验证文件存在的复选框
    8. 单击"确定"按钮

IIS 6.0通配符映射