Safari问题与HttpContext.User.Identity

时间:2012-06-28 11:46:34

标签: javascript jquery asp.net asp.net-mvc html5

我尝试播放mp3文件,该文件由ContentController的MyAudio方法返回,通过html5音频标签。以下代码:

[Authorize]
    public class ContentController : Controller
    {

        private ContentServices Content { get; set; }

        protected override void Initialize(RequestContext requestContext)
        {
            if (requestContext.HttpContext.User.Identity.isAuthenticated) 
            {
                base.Initialize(requestContext);
            }

        }


    public ActionResult MyAudio(string name)
    {
        var file = Server.MapPath("~/" + name);
        return File(file, "audio/mp3");
    }

常见的html代码

当用户获得授权时,所有功能都可以在Chrome中使用。但是当我在Safari中测试它时,有一个奇怪的谜。 HttpContext.User.Identity.isAuthenticated返回false,当然代码不会进一步执行。

有趣的是,当我使用例如@ Html.Action或@ Html.RouteLink时,HttpContext.User.Identity.isAuthenticated将返回true。

我曾尝试使用javascript和jquery来解决问题,但我在Safari也遇到了奇怪的事情。

<script type="text/javascript">
        function getAudio() {
            if (audio.src == "" || audio.src == null) {
                // (1) audio.src = '@Url.Content("~/Content/MyAudio")' + "hello.mp3";
                // (2) audio.src = '@Url.Action("MyAudio", "Content", new { name = "hello.mp3" } )';
                /* (3) $.get('@Url.Content("~/Content/MyAudio")', {"name": "hello.mp3"}, 
                function(data) {
                alert("hello");
                });
                */
                audio.load();
                audio.play();
            }
        }
    </script>

(1)和(2)都有同样的问题。但是当我使用(3)时,HttpContext.User.Identity.isAuthenticated在Safary返回true。但我想你不能通过jquery提供文件流。

有没有人知道我该怎么办才能解决这个问题?

PS我使用ASP.NET开发服务器和Safari 5.1.7 Win32 7。

0 个答案:

没有答案