尝试通过WebApi 2发布文件时出现错误500

时间:2020-01-10 10:20:40

标签: vb.net api iis asp.net-web-api2 http-status-code-500

我已经制作了一个简单的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)

1 个答案:

答案 0 :(得分:1)

您需要确保运行IIS的用户(通常为IIS_USRS)对您要向其写入文件的文件夹具有写权限。