c# - Visual Studio 集成网络服务器中的 WCF "Method Not Allowed"

标签 c# visual-studio wcf

我在 Visual Studio 2008 SP1 中有两个 Web 项目,一个承载 WCF 服务,另一个用于使用 WCF 服务。有问题的服务公开了一个 webHttpBinding 端点并将 JSON 作为输入并返回 JSON。

我已经使用 Jquery ajax 来使用来自客户端 Web 应用程序的服务,如下所示:

$(document).ready(function () {
    var data = '{"myobject":{"Business":"PIZZA"}}';
    $.ajax({
        type: "POST",
        contentType: "application/json",
        data: data,
        dataType: 'json',
        url: "http://localhost:1212/JobInfo.svc/ReturnThisString",
        error:
            function(XMLHttpRequest, textStatus, errorThrown) {
                alert("Error");
            },
        success: function(data) {
            alert("BoolValue: " + data.GetDataUsingDataContractResult.BoolValue);
            alert("StringValue: " + data.GetDataUsingDataContractResult.StringValue);
        }
    });

});

我在 Firebug HTML 请求中收到以下错误:

http://localhost:1212/JobInfo.svc/ReturnThisString 405 Method Not Allowed

但是如果在托管该项目的 Web 项目中运行完全相同的文件,则它工作正常。

托管项目在设置端口 localhost:1212 上运行,客户端在 localhost:RANDOM_PORT 上运行。由于本地主机相同,我想这不是跨域问题?还是端口部分也算在内?

服务端合约如下:

[OperationContract]
[WebInvoke(Method="POST",UriTemplate="ReturnThisString", 
        BodyStyle=WebMessageBodyStyle.Wrapped, 
        RequestFormat=WebMessageFormat.Json, 
        ResponseFormat=WebMessageFormat.Json)]
EventListArgs ReturnThisString(EventListArgs myobject);

[Serializable]
[DataContract]
public class EventListArgs {

    [DataMember( IsRequired = false)]
    public string Business;

    [DataMember( IsRequired = false)]
    public string Feeder;

}

实现的代码是:

public EventListArgs ReturnThisString(EventListArgs myobject)
{
    return myobject;
}

这是作为证明我没有做傻事的简单方法而添加的。我喜欢称之为完整性检查。它是一个简单的函数,它接受一个复杂的(非字符串类型的)JSON 对象作为参数并返回一个复杂的 JSON 对象。

enter image description here

正如您在上面看到的,我有两个使用 Visual Studio 内置 Web 服务器的 Web 项目(无法在本地安装 IIS)。上面的配置不起作用,但如果你能看到我在服务器主机中也有 Darkside 测试页面,它是来自客户端的精确副本,并且这个工作没有任何问题。

最佳答案

尝试使用 IIS Express 它具有与成熟的 IIS 相同的功能,并且无需安装。 只需一个简单的命令行即可启动它。它应该可以消除您遇到的与 Casini 相关的错误。

关于c# - Visual Studio 集成网络服务器中的 WCF "Method Not Allowed",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5256419/

相关文章:

c# - SignalR,将对象从 HUB 传递到客户端 (MVC C#)

c - 如何修复 C 中未定义的 'undefined reference to ****** collect2.exe: error: ld returned 1 exit status'

.net - 查找 .net 项目中未使用的类

.net - 使用 wcf Rest 服务在 iis7 上显示错误?

C# 判断字符串数组中的某个元素是否在任意位置包含给定的字符串

c# - 定时器不会以多线程形式触发

WCF 错误 - 找不到与方案匹配的基地址

wcf - 从 SharePoint 2010 BDC 到 WCF 服务再到 SQL Server 时如何克服双跃点问题

c# - boolean 值作为方法参数不改变状态

visual-studio - Visual Studio 2015 Enterprise 脱机安装失败