Sha*_* TK 1 c# wcf visual-studio wcf-data-services odata
我使用本教程使用Visual Studio 2012配置并构建了WCF和oData.
所以我使用Firefox REST Client插件来测试它是否正常工作.
这是我的基本URL处理json, 192.168.1.4/TestdataService/TestDataService.svc/User?$format=json
我可以成功完成GET操作.但是我无法执行POST,PUT和DELETE操作.
POST操作说
状态代码:415不支持的媒体类型
它的响应体是
{
"odata.error": {
"code": "",
"message": {
"lang": "en-US",
"value": "Unsupported media type requested."
}
}
}
Run Code Online (Sandbox Code Playgroud)
PUT&DELETE运营说
状态代码:405方法
不允许允许:GET,POST
它的响应体是
{
"odata.error": {
"code": "",
"message": {
"lang": "en-US",
"value": "The URI 'http://192.168.1.4/TestdataService/TestDataService.svc/User?$format=json' is not valid for DELETE operation. The URI must refer to a single resource from an entity set or from a property referring to a set of resources."
}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在附上下面的截图.对此有任何帮助表示赞赏.
谢谢.
得到

POST



放



我想你在这里有两个无关的问题.在PUT和DELETE动词必须是指一个特定的实体,而不是一个实体集.当你PUT-ting到TestDataService.svc/User,这是喜欢尝试更新整个实体集,这是不允许的.相反,您需要指定要更新的实体(例如,通过PUT按键TestDataService.svc/User(0),或者按键查找实体集).
该POST问题是不同的.在这种POST情况下,您应该定位实体集而不是invidivual实体.您获得的错误与请求的标题Content-Type或Accept标题有关.现在(为了简化调试),我将$format=json在URI中省略参数,因为它会覆盖Accept标头.尝试在POST请求中包含以下标头值:
Accept: application/json
Content-Type: application/json
DataServiceVersion: 3.0;
MinDataServiceVersion: 3.0;
MaxDataServiceVersion: 3.0;
Run Code Online (Sandbox Code Playgroud)
如果您仍然收到错误,请告诉我们.
同样,这个POST请求应该TestDataService.svc/User像你原来一样.PUT并DELETE应指向个别实体(例如TestDataService.svc/User(0))
此外,正如qujck在上面的评论中指出的那样,在您的屏幕截图中,PUT和POST的请求正文为空.POST表示"插入此条目",因此您需要提供一个要插入到请求正文中的条目.PUT表示"替换/更新此条目",因此在这种情况下您还需要向服务器提供数据.
| 归档时间: |
|
| 查看次数: |
4917 次 |
| 最近记录: |