Я пишу веб-приложение 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»?
Очевидно, я не первый разработчик, который сталкивается с этой ситуацией, и немыслимо, что вы должны делать то, что я говорю выше. Так в чем же заключается хитрость в этой ситуации?