3

.svc-ASP.Net4サービスを使用してWindowsServer2008からWindowsServer2012にWebサイトをコピーすると、Silverlightアプリケーションによってトリガーされるすべての.svc-Requestに対して405応答が返されます。

Windows Server 2008では、すべてが完全に機能しました。

aspnet_regiisとWCFレジスタ(ServiceModelReg)を試しました。ファイル.svcは、IIS 8のモジュールマッピングにも含まれています。また、ASP.NET 4.5 + 3.5をアンインストールし、それとWCFHTTPホスティングを再インストールしました。

すべてのWebサイトは、この移行の影響を受けます。

リクエスト:

POST /Data/search.svc HTTP/1.1
Accept  */*

応答:

HTTP/1.1 405 Method Not Allowed
Allow:  GET, HEAD, OPTIONS, TRACE

ファイルは次のようになります。「WebInvoke」も追加しようとしました。

[ServiceContract]
public interface IPackages
{
    /// <summary>
    /// Gets a package by a public key
    /// </summary>
    /// <param name="publicKey">Used public key</param>
    /// <returns>Information about the package</returns>
    [OperationContract]
    PackageInformation GetPackageByPublicKey(string publicKey);

// NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Packages" in code, svc and config file together.
public class Packages : IPackages
{
    /// <summary>
    /// Gets a package by a public key
    /// </summary>
    /// <param name="publicKey">Used public key</param>
    /// <returns>Information about the package</returns>
    public PackageInformation GetPackageByPublicKey(string publicKey)
    {
            return packageManager.GetPackageByPublicKey(publicKey);
    }
}

ヒントをありがとう。

4

3 に答える 3

8

Windows 2012 では、[サーバー マネージャー] に移動してから、[役割と機能の追加] に移動する必要があります。[サーバーの役割] オプションが表示されるまで、[次へ] を数回クリックします。そこから、アプリケーション サーバーを展開し、[Web サーバー (IIS) サポート] を選択します。次に、Http Activation とおそらく TCP Activation を選択する必要があります (私は両方を行いました)。これにより、2012 での WCF のサポートが有効になります。

必要なすべての依存関係を選択する必要がありますが、「Web サーバー (IIS)」セクションに移動し、次に「アプリケーション開発」に移動して、必要な ASP.NET オプションを選択する必要がある場合もあります (私は既にインストール済みです)。これらのオプションを最初に実行する必要があるため、これを実行する必要があるかどうかはわかりません。サポート オプションのみを実行する場合)。これにより、.svc ハンドラーが作成されます。

于 2013-12-10T16:49:44.413 に答える
2

次のタイプの *.svc の新しいマネージド ハンドラーを作成する必要がありました。

 System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35

これがデフォルトで行われないのは非常に奇妙です。

于 2012-12-29T15:58:30.037 に答える