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

问题描述:

当我使用.svc-ASP.Net 4服务从Windows Server 2008复制我的网站到Windows Server 2012时,我得到了一个405 Response for each .svc - Silverlight应用程序触发请求。Windows Server 2012中的.svc文件使用“405方法不允许”进行响应

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

感谢您的任何提示。

在Windows 2012上,您需要转到服务器管理器,然后添加角色和功能。点击下一步几次,直到你到达服务器角色选项。从那里,展开应用程序服务器并选择“Web服务器(IIS)支持”。接下来,您需要选择Http激活和可能的TCP激活(我都这样做),这是什么使得2012年支持WCF。

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

我不得不创建一个* .SVC一个新的托管处理程序与以下类型:

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

很奇怪,这是不是默认设置。

为了澄清和在用视图接受的答案扩展到是在未来有帮助的(它帮了我很多,我讨厌在传统的应用程序使用Silverlight工作)...

  1. 在Windows 2012你去服务器管理器,然后点击添加角色和 功能。

  2. 接下来点击几次,直到您找到服务器角色 选项。

  3. 从那里,检查应用程序服务器,然后单击下一步两次。

  4. 选择“Web服务器(IIS)支持”,然后弹出的窗口会出现 上市的功能,点击添加功能按钮,然后点击下一步按钮 ,然后点击安装按钮。

  5. “接下来,您需要选择Http Activiation,也许TCP激活 (我都这么做),这就是2012年支持WCF的原因。”

  6. 要做到这一点,请返回到服务器管理器,然后单击添加角色和 功能。

  7. 点击接下来几次,直到您选择服务器角色 选项,然后在左侧面板中单击功能条目。

  8. 然后展开.Net 4.5,然后展开WCF服务,然后选择HTTP 激活(其他类型在此处可用,根据需要添加它们),并继续安装它。

这些步骤为我解决了405问题。

我只需要HTTP激活。