Windows Server 2012中的.svc文件响应“405方法不允许”

时间:2012-12-29 15:08:32

标签: asp.net iis iis-8 windows-server-2012

当我使用.svc-ASP.Net 4服务从Windows Server 2008复制我的网站到Windows Server 2012时,我得到了一个Silverlight应用程序触发的每个.svc-Request的响应。

在Windows Server 2008中,一切都运行良好。

我尝试了aspnet_regiis和WCF注册(ServiceModelReg)。文件.svc也包含在IIS 8中的模块映射中。我还卸载了ASP.NET 4.5 + 3.5并重新安装它和WCF HTTP Hosting。

此迁移会影响所有网站。

请求:

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);
    }
}

感谢任何提示。

3 个答案:

答案 0 :(得分:6)

在Windows 2012上,您需要转到“服务器管理器”,然后选择“添加角色和功能”。单击下一步,直到进入“服务器角色”选项。从那里,展开Application Server并选择“Web服务器(IIS)支持”。接下来你需要选择Http Activiation和TCP激活(我都做了),这就是2012年支持WCF的原因。

它应该为您选择所有必需的依赖项,但可能还需要转到“Web服务器(IIS)”部分,然后“应用程序开发”并选择所需的ASP.NET选项(I我们已经先安装了这些选项,所以如果只做支持选项,我不知道是否有必要这样做。这将为您创建.svc处理程序。

答案 1 :(得分:2)

我必须使用以下类型为* .svc创建一个新的托管处理程序:

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

很奇怪,默认情况下不会这样做。

答案 2 :(得分:2)

澄清并扩展已接受的答案,以便在将来有所帮助(它帮助了我很多,我讨厌在遗留应用程序中使用SilverLight)...

  1. 在Windows 2012上,转到“服务器管理器”,然后单击“添加角色” 特征

  2. 单击“下一步”几次,直到进入“服务器角色” 选项。

  3. 从那里,检查Application Server并单击下一步。

  4. 选择&#34; Web服务器(IIS)支持&#34;,将出现一个弹出窗口 列出功能,单击“添加功能”按钮,然后单击下一步按钮 然后单击安装按钮。

  5. &#34;接下来你需要选择Http Activiation和TCP激活 (我做了两个),这是在2012年支持WCF的原因。&#34;

  6. 要执行此操作,请返回“服务器管理器”,然后单击“添加角色” 特征

  7. 单击“下一步”几次,直到进入“服务器角色” 选项,然后在左侧面板中单击功能条目。

  8. 然后展开.Net 4.5,然后展开WCF服务,然后选择HTTP 激活(此时可以使用其他类型,必要时添加它们),然后继续安装。

  9. 这些步骤解决了我的问题。

    我只需要HTTP激活。