IIS设置为“集成Windows身份验证”时,在flex中上传文件

时间:2009-12-08 18:11:59

标签: asp.net flex iis-6 file-upload windows-authentication

我有一个Flex应用程序,允许用户上传文件。 flex端使用FileReference.upload方法,该方法转到处理上载的.aspx页面。当IIS设置为集成Windows身份验证时,它只能间歇性地工作。也就是说,出于测试目的,我写了一个单独的aspx页面来执行文件上传,这总是有效....我想利用文件导入,但是,在漂亮的外观灵活应用程序中,并没有启动新的用于文件上传的网页。

在查看IIS日志时,我假设发生了什么,并想知道是否有人完全理解为什么它只能间歇性地工作并且可以确认或否认:

  1. Flex'FileReference upload guts执行客户端上的任何操作,然后向我的.aspx页面发起POST请求。在它失败的时候,IIS记录表明IE没有传递凭证,因此拒绝该请求然后发送401响应。
  2. 即使我正在侦听HTTP状态代码(flash bug?),我也没有在flex方面得到这个401响应。
  3. 新请求以某种方式立即再次执行上传(这不是我的代码)。我通过查看IIS lgos来推断这一点,它显示了在前一个POST之后的第二个POST,只是这次发送了用户凭据,但是踢球者是这次没有上传用户上传的文件。我推断这是因为IIS日志显示0个字节被发布,而之前的401请求显示了很多字节被POST。
  4. 在它确实有效的时候,会发生的事情是,FileReference的第一个HTTP POST请求会发送Windows凭据,因此客户端不会受到质疑。

    在IIS中使用集成身份验证时,是否有任何机构可以提供有关如何使FileReference.upload始终如一地工作的想法?

    克里斯

1 个答案:

答案 0 :(得分:0)

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

这是一个hacky解决方法,但有效。我们之前已经完成了这个,当时我们遇到类似的问题,QuickTime没有使用相同的会话凭证发出请求。