可能重复:
JSONP with MVC 4 WebApi
我的WebAPI有一个get方法,如下所示:
private T Get<T>(string uri)
{
T result = default(T);
bool isSuccess = true;
client
.GetAsync(uri)
.ContinueWith(task =>
{
// EnsureStatus
isSuccess = task.Result.IsSuccessStatusCode;
task
.Result
.Content
.ReadAsAsync<T>()
.ContinueWith(t => result = t.Result)
.Wait();
})
.Wait();
return result;
}
结果是以JSON格式生成的,但我想要它用于JSONP。
我读过ReadAsSync
只处理内置的媒体格式。那么我有办法改变它来处理JsonP吗?
答案 0 :(得分:4)
从this duplicate ....中自由地偷窃。
要完成你想要的东西,你需要做三件事:
media formatter
您可以窃取此JSONP媒体formatter。
然后,您需要注册媒体格式化程序。您可以使用以下代码段以编程方式执行此操作:
var config = GlobalConfiguration.Configuration;
config.Formatters.Insert(0, new JsonpMediaTypeFormatter());
由于您显然不使用global.asax,因此您需要确保格式化程序以某种方式注册。你没有提供足够的信息来说明如何做,但我怀疑一个明智的IF声明和一个静态变量表明注册会让你到那里。
我仍然不太清楚你正在使用什么类型的客户端,但如果它是jquery,那么下面的内容会让你到达那里:
$.ajax({
url: 'http://myurl.com',
type: 'GET',
dataType: 'jsonp',
success: function (data) {
alert(data.MyProperty);
}
})
重要的部分是发送的accept
标头与您的闪亮的新jsonp格式化程序正在侦听的接受标头匹配。我认为前两个选项是:application/javascript
或text/javascript
。