ContentController의 MyAudio 메서드에서 반환되는 mp3 파일을 html5 오디오 태그를 통해 재생하려고합니다. 다음 코드를HttpContext.User.Identity를 사용한 Safari 문제
[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 코드
사용자가 모든 권한 크롬에서 완벽하게 작동합니다. 그러나 사파리에서 테스트했을 때 이상한 수수께끼가 있습니다. 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를 반환합니다. 하지만 난 u는 jquery를 통해 파일 스트림을 줄 수 없다고 생각합니다.
문제를 해결할 수있는 방법은 누구에게 알 수 있습니까?
는 PS 나는 당신에게 쿠키를 삭제하고 다시 시도하십시오 ASP.NET 개발 서버와 사파리 5.1.7에서 Win32 7.
Safari의 어떤 버전을 사용하고 있습니까? – Ecnalyr
Safary를 사용하고 있습니다. 5.1.7 Win32 7 –
여기에서 문제의 원인을 알 수 있습니다. https://discussions.apple.com/message/18076941#18076941 – VJAI