3

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

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

我尝试了 aspnet_regiis 和 WCF Register (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);
    }
}

感谢您的任何提示。

4

3 回答 3

8

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

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

于 2013-12-10T16:49:44.413 回答
2

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

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

很奇怪,默认情况下没有这样做。

于 2012-12-29T15:58:30.037 回答
2

澄清和扩展已接受的答案,以期在未来有所帮助(它对我帮助很大,我讨厌在旧版应用程序中使用 SilverLight)......

  1. 在 Windows 2012 上,您转到服务器管理器,然后单击添加角色和功能。

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

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

  4. 选择“Web Server (IIS) Support”,将出现一个列出功能的弹出窗口,单击“添加功能”按钮,然后单击“下一步”按钮,然后单击“安装”按钮。

  5. “接下来你需要选择 Http Activation 和 TCP Activation(我都做了),这就是 2012 年支持 WCF 的原因。”

  6. 为此,请返回服务器管理器并单击添加角色和功能。

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

  8. 然后展开.Net 4.5,再展开WCF Services,然后选择HTTP Activation(此时其他类型可用,根据需要添加),继续安装。

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

我只需要 HTTP 激活。

于 2014-12-12T14:24:07.777 回答