尝试通过 WebApi 2 post 文件时出现错误 500
Error 500 when trying to post file via WebApi 2
我制作了一个简单的 WebApi 2 POST 方法来接收文件并将其存储在文件夹中 API 如下所示:
Imports System.Net
Imports System.Net.Http
Imports System.Web.Http
Public Class XmlController
Inherits ApiController
<HttpPost()>
Public Function PostXml() As HttpResponseMessage
If Request.Headers.Contains("authToken") Then
If Request.Headers.GetValues("authToken").First() <> "XXX" Then Return New HttpResponseMessage(HttpStatusCode.Unauthorized)
End If
Dim httpRequest = HttpContext.Current.Request
If httpRequest.Files.Count > 0 Then
For Each fileName As String In httpRequest.Files.Keys
Dim file = httpRequest.Files(fileName)
Dim filePath = HttpContext.Current.Server.MapPath("~/Tavoli/" & file.FileName)
file.SaveAs(filePath)
Next
Return Request.CreateResponse(HttpStatusCode.Created)
End If
Return Request.CreateResponse(HttpStatusCode.BadRequest)
End Function
End Class
如果我 运行 本地的 .NET Framework 应用程序并尝试 post 通过 POSTMAN 到 http://localhost:53790/api/xml
的文件一切正常,但是当我 post 我服务器上的网站,然后尝试通过将本地主机更改为我的域来使用相同的 POSTMAN 请求 returns 500 内部服务器错误,我尝试取消选中 "Read-Only"从文件夹中取出,但没有效果。该网站在 IIS 上 运行ning 和其他 POST 对其他 API 的调用工作正常(其他调用只是 JSON)
您需要确保运行 IIS 的用户(通常是 IIS_USRS
)对您尝试写入文件的文件夹具有写入权限。
我制作了一个简单的 WebApi 2 POST 方法来接收文件并将其存储在文件夹中 API 如下所示:
Imports System.Net
Imports System.Net.Http
Imports System.Web.Http
Public Class XmlController
Inherits ApiController
<HttpPost()>
Public Function PostXml() As HttpResponseMessage
If Request.Headers.Contains("authToken") Then
If Request.Headers.GetValues("authToken").First() <> "XXX" Then Return New HttpResponseMessage(HttpStatusCode.Unauthorized)
End If
Dim httpRequest = HttpContext.Current.Request
If httpRequest.Files.Count > 0 Then
For Each fileName As String In httpRequest.Files.Keys
Dim file = httpRequest.Files(fileName)
Dim filePath = HttpContext.Current.Server.MapPath("~/Tavoli/" & file.FileName)
file.SaveAs(filePath)
Next
Return Request.CreateResponse(HttpStatusCode.Created)
End If
Return Request.CreateResponse(HttpStatusCode.BadRequest)
End Function
End Class
如果我 运行 本地的 .NET Framework 应用程序并尝试 post 通过 POSTMAN 到 http://localhost:53790/api/xml
的文件一切正常,但是当我 post 我服务器上的网站,然后尝试通过将本地主机更改为我的域来使用相同的 POSTMAN 请求 returns 500 内部服务器错误,我尝试取消选中 "Read-Only"从文件夹中取出,但没有效果。该网站在 IIS 上 运行ning 和其他 POST 对其他 API 的调用工作正常(其他调用只是 JSON)
您需要确保运行 IIS 的用户(通常是 IIS_USRS
)对您尝试写入文件的文件夹具有写入权限。