Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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#Web Api(非MVC)字典参数_C#_Json_Dictionary_Web_Asp.net Web Api - Fatal编程技术网

C#Web Api(非MVC)字典参数

C#Web Api(非MVC)字典参数,c#,json,dictionary,web,asp.net-web-api,C#,Json,Dictionary,Web,Asp.net Web Api,我正在尝试创建一个Web Api,它将被许多网站/应用程序使用 Api将字典作为参数,因为它是动态的 C#方法: 我也尝试过绑定参数: public class myParameters { public Dictionary<string,string> parameters { get; set; } } public Dictionary<string, string> ApiTest(myParameters parameters ) 公共类myPara

我正在尝试创建一个Web Api,它将被许多网站/应用程序使用

Api将字典作为参数,因为它是动态的

C#方法:

我也尝试过绑定参数:

public class myParameters
{
    public Dictionary<string,string> parameters { get; set; }
}
public Dictionary<string, string> ApiTest(myParameters parameters )
公共类myParameters
{
公共字典参数{get;set;}
}
公共字典ApiTest(myParameters)
还是不走运

在浏览器控制台上,我一直从API接收回“{}”

我看了很多例子,但似乎没有一个有用。我对C#还是很陌生,所以一些评论和答案就在我之上(比如ModelBinder的东西)

更新

再搜索几个小时后,我决定从承载API的同一站点对API进行“本地”调用。 然后我就可以放置contentType:“application/json;charset=utf-8',在将解析JSON post对象发送到字典参数时没有问题:-(


现在我继续搜索contentType+C#Api+Dictionary+CORS

如果它在同一个域中工作正常,那么在这种情况下需要启用CORS,ajax调用将包括

crossDomain:true,
数据类型:“json”,
contentType:“应用程序/json”,


要启用CORS,请查看服务器上启用CORS的示例。

CORS通过简单的绑定参数(如字符串)跨域运行良好。Dictionary where失败

但是,我必须在IIS上再进一步,才能在AJAX调用中指定内容类型

我在没有指定IIS内容类型头的情况下对其进行了测试,即使我添加了crossDomain:true,我仍然会收到Jquery错误,抱怨CORS

var data = {"parameters":{"product_id":"1","product_model":"HFJ5G1.5","product_type":"plat","product_return":"graviteits"}};
//var data = {AlbumName: "Dirty Deeds",Songs:[ { SongName: "Problem Child"},{ SongName: "Squealer"}]};
var parameters = {};
parameters['1'] = 10;
parameters['2'] = 11;
$.ajax({
    type :'POST',
    url : 'http://localhost:8082/api/WebController/ApiTest/',
    dataType : 'json',
    data: parameters ,

    success : function(data) {
    console.log(data);
public class myParameters
{
    public Dictionary<string,string> parameters { get; set; }
}
public Dictionary<string, string> ApiTest(myParameters parameters )