7

Вопрос по https, iis-6, rest, servicestack, .net – Не удается заставить ServiceStack работать в IIS6 с HTTPS

У меня проблема с настройкой ServiceStack для работы с HTTPS в IIS6, и я не могу найти какую-либо документацию по его настройке. В настоящее время у меня есть настройка конечной точки, например,http://example.com/api.ashx, Когда я просматриваю это, я получаю полезную страницу, сгенерированную ServiceStack, которая объясняет API, доступные наhttp://example.com/api.ashx/metadata. When i browse to https://example.com/api.ashx (обратите внимание, https) я вместо этого получаю это сообщение об ошибке -

Server Error in '/' Application. The resource cannot be found. Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly. Requested 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, и я не могу заставить его работать там.

Другие обычные страницы aspx работают нормально при использовании https.

Я буду признателен всем, кто может дать мне толчок в правильном направлении!

  • Error: User Rate Limit Exceeded

    от Frank Tzanabetis
  • Error: User Rate Limit Exceeded

    от
  • 9

    Проблема с IIS 6 заключается в том

    что конвейер запросов IIS 6.0 не распознает путь без расширения ASP.NET, например .aspx не передается в ASP.NET isapi hander. Так что, как правило, есть 2 варианта, чтобы вы могли запустить ServiceStack на IIS 6:

    Change the servicestack path in Web.Config from '*' to 'servicestack.ashx'

    <system.web>

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

    </system.web>

    Add a wildcard mapping for your virtual directory to pass all unhandled requests to ASP.NET: Follow these steps to create a wildcard script map with IIS 6.0:

    Right-click a website and select Properties Select the Home Directory tab Click the Configuration button Select the Mappings tab Click the Insert button (see Figure 4) Paste the path to the aspnet_isapi.dll into the Executable field (you can copy this path from the script map for .aspx files) Uncheck the checkbox labeled Verify that file exists Click the OK button

    IIS 6.0 Wildcard mapping

  • 1

    Ответ Миф не сработал для меня.

    Я заработал, добавив тег местоположения в web.config с конфигурацией стека служб. Я обнаружил, что servicetack работает с path = & quot; * & quot; - но принял много запросов (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")]
    

    Но обратите внимание, что вариант 2 из ответа mythz также может потребоваться, поскольку в нашем решении он был настроен по умолчанию.