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工作)...
在Windows 2012你去服务器管理器,然后点击添加角色和 功能。
接下来点击几次,直到您找到服务器角色 选项。
从那里,检查应用程序服务器,然后单击下一步两次。
选择“Web服务器(IIS)支持”,然后弹出的窗口会出现 上市的功能,点击添加功能按钮,然后点击下一步按钮 ,然后点击安装按钮。
“接下来,您需要选择Http Activiation,也许TCP激活 (我都这么做),这就是2012年支持WCF的原因。”
要做到这一点,请返回到服务器管理器,然后单击添加角色和 功能。
点击接下来几次,直到您选择服务器角色 选项,然后在左侧面板中单击功能条目。
然后展开.Net 4.5,然后展开WCF服务,然后选择HTTP 激活(其他类型在此处可用,根据需要添加它们),并继续安装它。
这些步骤为我解决了405问题。
我只需要HTTP激活。