当我使用.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);
}
}
感谢任何提示。
答案 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)...
在Windows 2012上,转到“服务器管理器”,然后单击“添加角色” 特征
单击“下一步”几次,直到进入“服务器角色” 选项。
从那里,检查Application Server并单击下一步。
选择&#34; Web服务器(IIS)支持&#34;,将出现一个弹出窗口 列出功能,单击“添加功能”按钮,然后单击下一步按钮 然后单击安装按钮。
&#34;接下来你需要选择Http Activiation和TCP激活 (我做了两个),这是在2012年支持WCF的原因。&#34;
要执行此操作,请返回“服务器管理器”,然后单击“添加角色” 特征
单击“下一步”几次,直到进入“服务器角色” 选项,然后在左侧面板中单击功能条目。
然后展开.Net 4.5,然后展开WCF服务,然后选择HTTP 激活(此时可以使用其他类型,必要时添加它们),然后继续安装。
这些步骤解决了我的问题。
我只需要HTTP激活。