Windows 8上のIISでWCFサービスを提供できない


199

Windows 8マシンのIISでWCFサービスを提供しようとすると、よく知られているエラーが発生する

拡張機能の設定が原因で、リクエストしているページを提供できません。ページがスクリプトの場合は、ハンドラーを追加します。ファイルをダウンロードする必要がある場合は、MIMEマップを追加します。

古い回避策は実行することでしたがaspnet_regiis -i、このコマンドはWindows 8で非推奨になり、応答を返したようThis option is not supported on this version of the operating system. (...)です。

回避策は何ですか?

(私はaspxすでに通常のページを正常に有効にしているので、ほとんどのIIS構成は正常に見えます。)


詳細についてはaspnet_regiis -i:前のWindows 8ユーザーのためのコマンドで、このリンクを参照aspsnippets.com/Articles/...
デヴィッド・

回答:


406

簡単なことではないようです。Programs and Features -> Turn Windows features on or offコントロールパネルを使用して、WCFサービスを有効にする必要があります。mdsnに関するこのブログ投稿で説明されている.NET Framework Advanced Services -> WCF Servicesように移動して有効にしますHTTP Activation

コマンドプロンプトから(管理者として)、次のコマンドを実行できます。

C:\> DISM /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation
C:\> DISM /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation45

エラーが発生した場合は、以下を使用してください

C:\> DISM /Online /Enable-Feature /all /FeatureName:WCF-HTTP-Activation
C:\> DISM /Online /Enable-Feature /all /FeatureName:WCF-HTTP-Activation45

6
IISマネージャーの検索に時間を費やしました。IISマネージャーには、.NET Framework Advnaced Servicesについてユーザーに指示または伝えるアイコンが必要です。
Tony_Henrich 2013

コマンドプロンプトを使用すると、「操作は完了しましたが、WCF-HTTP-Activation機能が有効になっていません。必要な親機能が有効になっていない可能性があります。/enable-feature/ allオプションを使用して、各親機能を自動的に有効にすることができます。次のリストから。親機能がすでに有効になっている場合は、詳細な診断についてログファイルを参照してください。 " 何をオンにしているのかを知るために、代わりにGUIメソッドを使用しました。
ベンアダムス

5
ベンアンダーソンと同じ「必要な親機能が有効になっていない可能性があります」というエラーが発生し、エラーメッセージ(/all引数の追加)の提案を試してみましたが、正常に機能しましたDISM /Online /Enable-Feature /all /FeatureName:WCF-HTTP-Activation45
Troy Gizzi 2015年

1
あなたは素晴らしいです .Net Frameworkのバージョンに応じてこれを実行できることを追加することもできます(非常に詳細です)。のように.NET 3.5 Framework Advanced Services -> Windows Communication Foundation HTTP Activation
rion18

これは命の恩人です。この問題のほとんどのオンラインソリューションでは、Web機能で.Net 3.5 Frameworkを有効にするだけです。それは十分ではありません。また、ここで説明されている手順を実行する必要があります。
markaaronky 2017

95

Windows Server 2012の場合、ソリューションはfaesterのソリューションと非常に似ています(上記を参照)。サーバーマネージャーでをクリックしAdd roles and features、適切なサーバーを選択して、を選択しますFeatures。の下.NET Framework 4.5 Featuresにが表示されWCF Services、その下にが表示されますHTTP Activation


これありがとう !しかし、.Net 4はどうですか?あなたはこの機能を有効にすることが.Net v4.0でも同じことをすると思いますか?
アラジンガラス2013

2
既存のWebアプリケーションでは、Windows機能を追加した後、次のことも行う必要があります。-inetmgrを起動します-「ハンドラーマッピング」を開きます-拡張子* .svcのsvc-ISAPIマッピングが存在するかどうかを確認します。そうでない場合は、「親に戻す」アクションを使用して、それらを親Webサイトからコピーします。これは、通常IIS7 +の場合と同様に、カスタムハンドラーマッピングがアプリケーションのweb.configで構成されていることを前提としています。そうしないと、「親に戻す」を実行したときにそれらが失われます。
Berend Engelbrecht 2014

13

IIS 8.0で次の2つの手順を実行してください

新しいMIMEタイプとHttpHandlerを追加する

  1. 拡張子:.svc、MIMEタイプ:application / octet-stream

  2. リクエストパス:* .svc、タイプ:System.ServiceModel.Activation.HttpHandler、名前:svc-Integrated


有効化に失敗した非常に古いWindows 7インストール-.Net 3.5(Http&Non-Http Activation)とWASのための最良のソリューション。OSを再インストールするのが
難しい

特に独自のハンドラーを作成および追加する場合は、このメソッドについて知っておく価値があります。ただし、「Windowsの機能のオンとオフを切り替える」を使用すると、既知のファイル拡張子のほとんどを取得できるため、それぞれを個別に追加する(そしてすべての正しい詳細を見つける)時間を節約できます
Daniel Hollinrake


3

これは実際にはfaesterのソリューションやBill Moonのソリューションと同じですが、PowerShellを使用してこれを行う方法を次に示します。

Import-Module Servermanager
Add-WindowsFeature AS-HTTP-Activation

もちろん、DISMPowerShell からの呼び出しを妨げるものは何もありません。


非常に素晴らしい。情報ありがとうございます。
Rod Hartzell、2016年

-1

このコードをasp mvcのweb.configに追加できます

   <system.webServer>
    <staticContent>
      <remove fileExtension=".srt" />
      <mimeMap fileExtension=".srt" mimeType="text/srt" />
      <remove fileExtension=".vtt" />
      <mimeMap fileExtension=".vtt" mimeType="text/vtt" />
    </staticContent>
  </system.webServer>

あなたはあなたのファイル拡張子でファイル拡張子を変えることができます


こんにちは@malik-ファイル拡張子のマッピングがどのようにsvc-endpointsを機能させることができるかを明確にできますか?
faester

私が正しく理解していれば、必要に応じて拡張子を変更できます。あなたはfeedforall.com/mime-types.htmから見ることができますが、別のことを言うでしょう、私は理解できません。
malik masis
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.