http - 如何在 IIS 中启用上传

标签 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 方法上传文件。

最佳答案

IIS 是一个网络服务器,它没有内置上传处理程序。如果您想在特定的 url 上使用 POST 上传文件,您必须创建一个实际的网络应用程序。

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

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

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 的文件。

关于http - 如何在 IIS 中启用上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8997556/

相关文章:

javascript - 允许用户使用 JavaScript 将文件上传到文件夹

node.js - 在 IIS 中部署 Node 应用程序

ajax - ESP8266 同时请求多个 HTTP GET

rest - POST请求两次

c# - 服务无法在 WCF 中找到其他服务的端点

javascript - Fastclick.js 与 AngularJS 集成

android - VS 2013 多设备混合应用程序无法部署到设备,未找到设备

android - 如何在 Mac 上添加平台 android (cordova)

每个 HTTP 请求的 Angular 显示微调器,代码更改非常少

apache - 为什么 <myWebsite.com> :8080 works while <mywebsite. com> 不适用于在 Ec2 上运行的 tomcat 服务器?