0

我担心的是我返回 JSON 的 web-api 项目在本地工作得很好,但是当托管在共享主机上时

我已经添加了这个

<modules runAllManagedModulesForAllRequests="true"> <remove name="WebDAVModule"/> </modules>

我还检查了这个 http://geekswithblogs.net/michelotti/archive/2011/05/28/resolve-404-in-iis-express-for-put-and-delete-verbs.aspx

也检查了本文中提到的设置,一切都在那里。

删除和放置 - http://api.antheminfotech.net/api/employees/23 - 500 错误

我已经厌倦了很多事情,我对 web-api 有点陌生,所以也许我错过了一些东西......或者我需要一个 VPS 主机来获得所需的访问权限......

顺便说一句,我正在使用 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
4

2 回答 2

2

似乎问题在于共享主机,他们无法绕过安全性并提供正确的访问权限。我将 API 移动到 VPS 并且它在那里工作得很顺畅。

于 2013-04-15T04:21:33.143 回答
1

通常在共享主机上,这些额外的(是的,它们是额外的)动词默认情况下是不启用的。如果 99.99% 的客户群不需要启用它,系统管理员不愿意添加额外功能。

如果他们启用了它,请咨询您的主机。他们可能不会,也可能会拒绝启用它们。如果是这样,请向他们询问替代方案,否则迁移到其他主机。

于 2013-04-14T07:10:31.803 回答