Asp.net Windows Server 2012中的.svc文件响应为“0”;405“不允许使用方法”;
当我使用.svc-ASP.Net 4服务将我的网站从Windows Server 2008复制到Windows Server 2012时,Silverlight应用程序触发的每个.svc请求都会得到405响应 在WindowsServer2008中,一切都运行得很好 我尝试了aspnet_regiis和WCF寄存器(ServiceModelReg)。.svc文件也包含在IIS 8中的模块映射中。我还卸载了ASP.NET 4.5+3.5并重新安装了它和WCF HTTP主机 所有网站都受此迁移影响 请求:Asp.net Windows Server 2012中的.svc文件响应为“0”;405“不允许使用方法”;,asp.net,iis,iis-8,windows-server-2012,Asp.net,Iis,Iis 8,Windows Server 2012,当我使用.svc-ASP.Net 4服务将我的网站从Windows Server 2008复制到Windows Server 2012时,Silverlight应用程序触发的每个.svc请求都会得到405响应 在WindowsServer2008中,一切都运行得很好 我尝试了aspnet_regiis和WCF寄存器(ServiceModelReg)。.svc文件也包含在IIS 8中的模块映射中。我还卸载了ASP.NET 4.5+3.5并重新安装了它和WCF HTTP主机 所有网站都受此迁移影响
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);
}
}
[服务合同]
公共接口IPackages
{
///
///通过公钥获取包
///
///使用的公钥
///关于包裹的信息
[经营合同]
PackageInformation GetPackageByPublicKey(字符串publicKey);
//注意:您可以使用“重构”菜单上的“重命名”命令来同时更改代码、svc和配置文件中的类名“Packages”。
公共类包:IPackages
{
///
///通过公钥获取包
///
///使用的公钥
///关于包裹的信息
公共包信息GetPackageByPublicKey(字符串publicKey)
{
返回packageManager.GetPackageByPublicKey(publicKey);
}
}
谢谢您的提示。我必须为*.svc创建一个新的托管处理程序,其类型如下:
System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
很奇怪,默认情况下没有这样做。在Windows 2012上,您需要转到服务器管理器,然后添加角色和功能。单击“下一步”几次,直到进入“服务器角色”选项。从那里,展开应用程序服务器并选择“Web服务器(IIS)支持”。接下来,您需要选择Http激活和TCP激活(我两者都做了),这就是2012年支持WCF的原因
它应该为您选择所有必需的依赖项,但您可能还需要转到“Web服务器(IIS)”部分,然后转到“应用程序开发”并选择所需的ASP.NET选项(我已经先安装了这些选项,所以如果只执行支持选项,我不知道是否有必要这样做)。这将为您创建.svc处理程序。以澄清并扩展已接受的答案,以期在将来有所帮助(这对我帮助很大,我讨厌在传统应用程序中使用SilverLight)
我只需要HTTP激活。您也可以使用一行PowerShell(或者两行,如果您还需要TCP激活):
安装WindowsFeature NET-WCF-HTTP-Activation45
(和安装WindowsFeature NET-WCF-TCP-Activation45
)。请注意,即使您运行的是更高版本的.NET,这些仍然是要使用的功能名称。