我已经制作了一个简单的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应用程序,并尝试通过POSTMAN将文件发布到http://localhost:53790/api/xml
,则一切正常,但是当我在服务器上发布网站,然后尝试通过更改来使用相同的POSTMAN请求时本地主机到我的域,它返回500 Internal Server Error,我试图取消选中该文件夹中的“只读”,但它没有任何作用。.该网站正在IIS上运行,并且对其他API的其他POST调用工作正常(其他调用只是JSON)
答案 0 :(得分:1)
您需要确保运行IIS的用户(通常为IIS_USRS
)对您要向其写入文件的文件夹具有写权限。