我担心的是我的web-api项目返回JSON在本地工作得非常好,但是当托管在共享主机上时
我已经添加了这个
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule"/>
</modules>
检查了本文中提到的设置,它就在那里。
DELETE和PUT - http://api.antheminfotech.net/api/employees/23 - 500错误
我已经厌倦了很多事情,我对web-api有点新意,所以也许我错过了某些东西......或者我是否需要VPS托管以获得所需的访问权....
BTW我正在使用enitiy框架并基于EF模型为此创建自动生成的控制器。
Function PutEmpDetail(ByVal id As Integer, ByVal empdetail As EmpDetail) As HttpResponseMessage
If Not ModelState.IsValid Then
Return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState)
End If
If Not id = empdetail.Id Then
Return Request.CreateResponse(HttpStatusCode.BadRequest)
End If
db.Entry(empdetail).State = EntityState.Modified
Try
db.SaveChanges()
Catch ex As DbUpdateConcurrencyException
Return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex)
End Try
Return Request.CreateResponse(HttpStatusCode.OK)
End Function
Function DeleteEmpDetail(ByVal id As Integer) As HttpResponseMessage
Dim empdetail As EmpDetail = db.EmpDetails.Find(id)
If IsNothing(empdetail) Then
Return Request.CreateResponse(HttpStatusCode.NotFound)
End If
db.EmpDetails.Remove(empdetail)
Try
db.SaveChanges()
Catch ex As DbUpdateConcurrencyException
Return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex)
End Try
Return Request.CreateResponse(HttpStatusCode.OK, empdetail)
End Function
答案 0 :(得分:1)
通常在共享主机上,这些额外的(并且是的,它们是额外的)动词默认情况下不启用。如果99.99%的客户群不需要启用,系统管理员不愿意添加额外内容。
如果您的主机已启用,请咨询您的主机。可能他们没有,也可能,他们可能拒绝启用它们。如果是这样,请向他们询问替代方案,否则迁移到其他主机。
答案 1 :(得分:1)
似乎问题在于共享主机,它们无法绕过安全性并提供正确的访问权限。我将API移动到VPS并且它在那里无缝地工作。