我的 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/