2012-04-04 9 views
7

IIS6でHTTPSを使用するためにServiceStackを取得する際に問題が発生しましたが、これを設定する際にドキュメントが見つからないようです。 現在、私はそのようなエンドポイント設定を持っています - http://example.com/api.ashx。これを参照すると便利なServiceStack生成ページが表示され、http://example.com/api.ashx/metadataで利用可能なAPIについて説明しています。 「/」アプリケーションでHTTPSを使用してIIS6でServiceStackを動作させることができません

サーバーエラー - 私はhttps://example.com/api.ashxを参照すると 私が代わりにこのエラーメッセージが表示されます(HTTPSに注意してください)。リソースが見つかりません。 説明:HTTP 404。探しているリソース(またはその の依存関係の1つ)が削除されたか、名前が変更されたか、 が一時的に利用できませんでした。次のURLを参照し、 のスペルが正しいことを確認してください。要求されたURL:/api.ashx

私は(ここでは例として、あたり - http://www.servicestack.net/ServiceStack.Hello/) - 私のweb.configファイルに以下の設定している私の地元のWindows 7ボックスで

<!-- 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> 

を私が実行していますIIS7とそれは正常に動作しますが、テスト環境とライブ環境はまだIIS6を使用しており、私はそこで動作するようにはできません。

httpsを使用すると、他の通常のaspxページが正常に動作しています。

私は正しい方向にプッシュを与えることができる人に感謝します!

答えて

9

IIS 6.0の問題点は、IIS 6.0の要求パイプラインがASP.NET拡張機能なしのパスを認識しないことです。たとえば、.aspxがASP.NET isapiハンドラに渡されないなどです。だから、これはあなたがServiceStackは、IIS 6上で実行するために取得することができますので、起こることを取得するための2つのオプションは、一般的にあります

  1. 変更] servicestack.ashx "

    への「*」のWeb.Configでservicestackパス

    <のsystem.web >

    <のhttpHandlers > <パス= "servicestack.ashx" タイプ= "ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory、ServiceStack" 動詞を追加= "*"/> </httpHandlersの>

    </system.web>

  2. ASP.NETに、すべての未処理の要求を渡すためにあなたの仮想ディレクトリのワイルドカードマッピングを追加します。 IISでのワイルドカードスクリプトマップを作成するには、次の手順を実行します6。0:

    1. 右クリックしてウェブサイトおよびプロパティ
    2. を選択
    3. ホームディレクトリ]タブを選択して設定ボタン
    4. をクリックしてマッピング]タブ
    5. を選択して[挿入]ボタンをクリックします(図4を参照)
    6. aspnet_isapi.dllへのパスを実行可能フィールドに貼り付けます(.aspxファイルのスクリプトマップからこのパスをコピーできます)
    7. chのチェックを外しますそのファイルを確認してくださいラベルeckboxはOKボタン

IIS 6.0 Wildcard mapping

+0

実際、もう一つのステップがありませんでした(証明書関連の問題)。私の悪い。これは役に立ちます: –

+0

試したオプション1:ハンドラが見つからないというエラーではなく404エラーが表示されました。試行されたオプション2:オプションでワイルドカード拡張子マッピングを設定した後で、ハンドラが見つかりませんでした。 2:404エラー。それ以外の考えは?私はIIS6でこれを動作させることにかなり困惑しています。 – kmehta

1

mythzの答えは私のために動作しませんでしたクリック

  • が存在します。

    servicestackの設定でweb.configにlocationタグを追加することで動作しました。 私はservicestackがパスで働い= "*" が見つかります - しかし多くの要求(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も必要なことに注意してください。

  • 関連する問題