IIS7.5 не отображает объект Flash - PullRequest
0 голосов
/ 25 января 2011

Я пишу веб-приложение MVC в ASP.NET MVC, которое должно обслуживать объект Flash, написанный одним из моих коллег. Я не знаю Флэш; он не знает C # / ASP.NET; отсюда вопрос к ТАК!

Код на моей веб-странице выглядит так:

<head>
(blah blah blah...)
  <script type="text/javascript" src="/FlashStuff/js/swfobject.js"></script>
  <script type="text/javascript">
    var GP_MLM_flashvars = {};
    GP_MLM_flashvars.remote = 'true';
    GP_MLM_flashvars.streamprovider = 'localweb';
    GP_MLM_flashvars.referer = '';
    GP_MLM_flashvars.bgcolor = '#000033';
    var GP_MLM_params = {};
    GP_MLM_params.menu = 'false';
    GP_MLM_params.allowFullScreen = 'true';
    GP_MLM_params.salign = 'tl';
    GP_MLM_params.scale = 'noscale';
    GP_MLM_params.wmode = 'opaque';
    GP_MLM_params.bgcolor = '#000033';
    var GP_MLM_attributes = {};
    GP_MLM_attributes.id = 'GP_MLM';
    GP_MLM_attributes.name = 'GP_MLM';
    swfobject.embedSWF('/FlashStuff/swf/GP_MLM.swf', 'GP_MLM', '100%', '100%', '9', '/FlashStuff/expressInstall.swf', GP_MLM_flashvars, GP_MLM_params, GP_MLM_attributes);          
  </script>
</head>
(etc.)

Когда я отлаживаю эту страницу с помощью VS Development Server, все выглядит очень счастливо и работает нормально. Но если я пытаюсь выполнить отладку с помощью локального сервера IIS (7.5), объект Flash не загружается.

Полагаю, мне нужно что-то сделать в IIS, чтобы разрешить использование объекта Flash - но что?

РЕДАКТИРОВАТЬ: Проблема частично решена; подсказка произошла из-за ошибки «404» (спасибо @Beliskner).

Похоже, что когда вы работаете под VS Development Server, ваша корневая папка является папкой проекта, и в моем случае "/ FlashStuff" идет прямо из папки моего проекта, так что это сработало нормально.

Но когда вы запускаете сервер IIS, корневой папкой является веб-сайт по умолчанию (или любой другой используемый вами сайт). Теперь, когда URL-адрес проекта установлен на «http://localhost/MyTestApp",», я должен поставить перед всеми моими путями префикс «/ MyTestApp», например ::

<script type="text/javascript" src="/MyTestApp/FlashStuff/js/swfobject.js"></script>

Изменены все пути; теперь работает нормально.

Однако сейчас это довольно уродливая ситуация - потому что я сейчас жестко зашифровываю информацию о развертывании в своем приложении! Поэтому, если я решу развернуть свое приложение на IIS-сервере в папке с именем «MyLiveApp», мне придется изменить ссылки на файлы везде ! И если я хочу отладить его - тогда что? Изменить все ссылки обратно на «MyTestApp»?

Очевидно, я не первый разработчик, который сталкивается с этой ситуацией, и немыслимо, что вы должны делать то, что я говорю выше. Так в чем же заключается хитрость в этой ситуации?

Ответы [ 3 ]

6 голосов
/ 25 января 2011

Вы установили типы IIS MIME?Вы использовали firefox firebug, чтобы проверить, что запрос не 404ing?

MIME

http://technet.microsoft.com/en-us/library/cc725608(WS.10).aspx - я предлагаю использовать GUI

Расширение: ".swf"

Тип: "application / x-shockwave-flash"

Firebug

Сетевой монитор Firebug: http://getfirebug.com/network

Редактировать Используйте это, чтобы решить вашу проблему: http://www.dailycoding.com/Posts/the_script_tag_runatserver_problem_solution_using_resolveurl.aspx

0 голосов
/ 25 января 2011

Да, вам нужно добавить swf в качестве IIME-типа для каждого сайта. У меня была такая же проблема с файлами .mp4

0 голосов
/ 25 января 2011

Попробуйте встроить объект Flash в тело html-страницы

<head> (blah blah blah...)
    <script type="text/javascript" src="/FlashStuff/js/swfobject.js"></script>
</head>    
<body>   
    <script type="text/javascript">
    var GP_MLM_flashvars = {};
    GP_MLM_flashvars.remote = 'true';
    GP_MLM_flashvars.streamprovider = 'localweb';
    GP_MLM_flashvars.referer = '';
    GP_MLM_flashvars.bgcolor = '#000033';
    var GP_MLM_params = {};
    GP_MLM_params.menu = 'false';
    GP_MLM_params.allowFullScreen = 'true';
    GP_MLM_params.salign = 'tl';
    GP_MLM_params.scale = 'noscale';
    GP_MLM_params.wmode = 'opaque';
    GP_MLM_params.bgcolor = '#000033';
    var GP_MLM_attributes = {};
    GP_MLM_attributes.id = 'GP_MLM';
    GP_MLM_attributes.name = 'GP_MLM';
    swfobject.embedSWF('/FlashStuff/swf/GP_MLM.swf', 'GP_MLM', '100%', '100%', '9', '/FlashStuff/expressInstall.swf', GP_MLM_flashvars, GP_MLM_params, GP_MLM_attributes);             
 </script>

(etc.)
</body>

Я полагаю, что embedSWF - это функция javascript для записи тега object

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...