7

我在让 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 并确保其拼写正确。请求的 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 页面工作正常。

我会很感激任何能给我推动正确方向的人!

4

2 回答 2

9

IIS 6 的问题在于 IIS 6.0 请求管道无法识别没有 ASP.NET 扩展名的路径,例如 .aspx 不会传递给 ASP.NET isapi 处理程序。因此,通常有 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. 选择映射选项卡
    5. 单击插入按钮(参见图 4)
    6. 将 aspnet_isapi.dll 的路径粘贴到 Executable 字段中(您可以从 .aspx 文件的脚本映射中复制此路径)
    7. 取消选中标记为验证文件存在的复选框
    8. 单击确定按钮

IIS 6.0 通配符映射

于 2012-04-04T06:06:05.080 回答
1

神话的答案对我不起作用。

我通过使用 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 可能也是必需的,因为它是我们解决方案中的默认设置。

于 2014-02-14T07:26:53.883 回答