Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 不允许使用Post方法_C#_Angularjs_Wcf_Restangular - Fatal编程技术网

C# 不允许使用Post方法

C# 不允许使用Post方法,c#,angularjs,wcf,restangular,C#,Angularjs,Wcf,Restangular,我试过这个例子: GET方法工作得很好,但POST方法不行。调试时,strReturnValue变量始终为空。当我继续时,状态为:405方法不允许。我做错了什么 在C#中,我不得不将方法从POST更改为OPTIONS 我正在使用Restanglar(AngularJS)。以下是前端功能: var message = { Name: new_player.name, Created: (new Date()).toJSON(),

我试过这个例子:

GET方法工作得很好,但POST方法不行。调试时,strReturnValue变量始终为空。当我继续时,状态为:405方法不允许。我做错了什么

在C#中,我不得不将方法从POST更改为OPTIONS

我正在使用Restanglar(AngularJS)。以下是前端功能:

        var message = {
            Name: new_player.name,
            Created: (new Date()).toJSON(),
            Affilation: new_player.human,
            auth: new_player.auth
        }
        return Restangular.one('').post('CreatePlayer', message).then(function(){
            console.log("Object saved OK");
          }, function() {
            console.log("There was an error saving");               
        });

编辑

[System.ServiceModel.OperationContract]
    [System.ServiceModel.Web.WebInvoke(UriTemplate = "CreatePlayer", Method = "OPTIONS", BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
    string CreatePlayer(System.IO.Stream data);

    public string CreatePlayer(System.IO.Stream data) {

        //convert stream data to StreamReader
        System.IO.StreamReader reader = new System.IO.StreamReader(data);

        //read StreamReader data as string
        string XML_string = reader.ReadToEnd();
        string result = XML_string;

        //return the XMLString data
        return result;
    }

不得不将我的前端post调用的标题更改为:“application/x-www-form-urlencoded”(默认的Internet媒体类型)

或者,您可以使用angular$http服务:

$http({
    url: 'http://localhost:31736/BusinessService.svc/CreatePlayer',
    method: 'POST', 
    data: "test",
    headers: {"Content-Type": "application/x-www-form-urlencoded"}
}); 
就是这样然后,我可以序列化生成的字符串并前进到我的业务逻辑

    public string CreatePlayer(System.IO.Stream data) {

        //convert stream data to StreamReader
        System.IO.StreamReader reader = new System.IO.StreamReader(data);

        //read StreamReader data as string
        string XML_string = reader.ReadToEnd();

        System.Web.Script.Serialization.JavaScriptSerializer json_serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
        BusinessObjects.Player Player = json_serializer.Deserialize<BusinessObjects.Player>(XML_string);

        return BL_CreatePlayer.CreatePlayer(Player);
    }
公共字符串CreatePlayer(System.IO.Stream数据){
//将流数据转换为StreamReader
System.IO.StreamReader reader=新的System.IO.StreamReader(数据);
//以字符串形式读取StreamReader数据
string XML_string=reader.ReadToEnd();
System.Web.Script.Serialization.JavaScriptSerializer json_serializer=new System.Web.Script.Serialization.JavaScriptSerializer();
BusinessObjects.Player=json_serializer.Deserialize(XML_字符串);
返回BL_CreatePlayer.CreatePlayer(Player);
}

请显示接收帖子的操作?
    public string CreatePlayer(System.IO.Stream data) {

        //convert stream data to StreamReader
        System.IO.StreamReader reader = new System.IO.StreamReader(data);

        //read StreamReader data as string
        string XML_string = reader.ReadToEnd();

        System.Web.Script.Serialization.JavaScriptSerializer json_serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
        BusinessObjects.Player Player = json_serializer.Deserialize<BusinessObjects.Player>(XML_string);

        return BL_CreatePlayer.CreatePlayer(Player);
    }