如何在IIS中启用上载

时间:2012-01-25 03:44:39

标签: http iis cordova

我的IIS实例上有一个名为Uploads的文件夹。我正在从Android应用程序执行HTTP POST以将文件上载到IIS服务器。

这不起作用。操作看起来像这样(这是失败的请求记录的一部分),

<failedRequest url="http://*ADDRESS*:80/JsonWCFService/Uploads"
           siteId="1"
           appPoolId=".NET4 App Pool"
           processId="1176"
           verb="POST"
           remoteUserName=""
           userName=""
           tokenUserName="NT AUTHORITY\IUSR"
           authenticationType="anonymous"
           activityId="{00000000-0000-0000-6800-0080000000FA}"
           failureReason="STATUS_CODE"
           statusCode="200"
           triggerStatusCode="405"
           timeTaken="63"
           xmlns:freb="http://schemas.microsoft.com/win/2006/06/iis/freb"
           >

所以我们在那里得到405。我是否需要在IIS中配置更多内容?

我正在使用PhoneGap API使用FileTransfer.upload方法上传文件。

1 个答案:

答案 0 :(得分:1)

IIS是一个web server,它没有内置upload handler。如果您想在特定POST上使用url上传文件,则必须创建实际的网络应用程序。

在此处阅读更多内容: http://support.microsoft.com/kb/189651

我可以提出的最简单的解决方案是使用asp.net创建一个新的HttpHandler项目 - 代码看起来像这样(尽可能简单 ):

public class UploadHandler : IHttpHandler, IRequiresSessionState
{        
    public void ProcessRequest(HttpContext context)
    {
        try
        {
            HttpPostedFile file = context.Request.Files[0];
            file.SaveAs(path);
        }
        catch (Exception ex)
        {
            // include your custom logging code
            // Log.Error(ex.Message, ex);
            throw;
        }
    }
}

请注意,这对于小型文件是可以接受的,您应该将其用于重于 MB 的文件。< / p>