Asp.net 当IIS设置为“集成windows身份验证”时,在flex中上载文件

Asp.net 当IIS设置为“集成windows身份验证”时,在flex中上载文件,asp.net,apache-flex,iis-6,file-upload,windows-authentication,Asp.net,Apache Flex,Iis 6,File Upload,Windows Authentication,我有一个flex应用程序,允许用户上传文件。flex端使用FileReference.upload方法,该方法转到处理上载的.aspx页面。它仅在IIS设置为集成windows身份验证时间歇性工作。这就是说,出于测试目的,我编写了一个单独的aspx页面,用于文件上传,这总是有效的……不过,我希望在美观的flex应用程序中利用文件导入,而不是启动一个用于文件上传的新网页 在查看IIS日志时,我对正在发生的事情有一个假设,并想知道是否有人完全理解为什么它可能只是间歇性工作,并且可以确认或否认这一点:

我有一个flex应用程序,允许用户上传文件。flex端使用FileReference.upload方法,该方法转到处理上载的.aspx页面。它仅在IIS设置为集成windows身份验证时间歇性工作。这就是说,出于测试目的,我编写了一个单独的aspx页面,用于文件上传,这总是有效的……不过,我希望在美观的flex应用程序中利用文件导入,而不是启动一个用于文件上传的新网页

在查看IIS日志时,我对正在发生的事情有一个假设,并想知道是否有人完全理解为什么它可能只是间歇性工作,并且可以确认或否认这一点:

Flex的FileReference upload guts在客户端执行任何操作,然后向my.aspx页面发起POST请求。当它失败时,IIS日志会声明IE没有通过凭据,因此拒绝请求,然后发送401响应。 即使我正在监听HTTP状态码flash bug?,我在flex端也没有收到401响应?。 一个新的请求被立即提出,再次执行上传。这不是我的代码。我是通过查看IIS LGO来推断这一点的,它显示了在前一篇文章之后的第二篇文章,只是这次发送了用户凭据,但更重要的是,用户上传的文件这次没有上传。我推断这是因为IIS日志显示已发布0个字节,而之前的401请求显示已发布大量字节。 当它工作时,发生的情况是FileReference发出的HTTP POST的第一个请求碰巧发送了windows凭据,因此客户端不会受到质疑

在IIS中使用集成身份验证时,任何机构都能给出如何使FileReference.upload一致工作的想法吗


Chris

您可以通过将FileReference.upload始终上载到非安全的aspx页面来解决该问题。在上载之前,在remoting/http/webservice中使用单独的调用,向服务器指示您要上载文件。让服务器将随机令牌传回客户端,并将令牌缓存在内存中。然后将令牌作为GET变量与上载url一起发送。您可以在服务器上验证令牌,并通过令牌应用安全性

这是一个黑客的解决办法,但工作。在QuickTime没有使用相同的会话凭据发出请求时,我们曾经遇到过类似的问题