开发者

IIS7.5 not displaying Flash object

I'm writing a MVC web app in ASP.NET MVC, which is supposed to be serving up a Flash object written by one of my colleagues. I don't know any Flash; he doesn't know any C#/ASP.NET; hence the question goes to SO!

The code on my web page looks like this:

<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_fla开发者_运维问答shvars.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.)

When I debug this page using the VS Development Server, it all appears very happily and works fine. But if I try to debug using my local IIS (7.5) server, the Flash object doesn't get loaded.

I'm guessing I need to do something on IIS to enable using the Flash object - but what?

EDIT: Problem partially solved; the clue came from the "404" error (thanks @Beliskner).

It appears that when you're running under the VS Development Server, your root folder is the project folder, and in my case "/FlashStuff" comes directly off my project folder, so that worked fine.

But when you run off the IIS server, the root folder is the Default Web Site (or whatever site you're using). Now, with a project URL set to "http://localhost/MyTestApp", I have to prefix all my paths with "/MyTestApp", e.g.:

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

Changed all the paths; works fine now.

This is a pretty ugly situation now, though - because I am now hard coding deployment-specific information into my app! So if I decide to deploy my app onto an IIS server in a folder called "MyLiveApp", I have to go around changing the file references everywhere! And if I want to debug it - then what? Go changing all the references back to "MyTestApp"?

Obviously I'm not the first developer to come up against this situation, and it is unthinkable that you have to do what I'm saying above. So what is the trick for dealing with this situation?


Have you setup the IIS MIME types? Have you used firefox firebug to check the request isn't 404ing?

Mime types

http://technet.microsoft.com/en-us/library/cc725608(WS.10).aspx - I suggest using the GUI

Extension: ".swf"

Type is: "application/x-shockwave-flash"

Firebug

Firebug network monitor: http://getfirebug.com/network

Edit Use this to solve your problem: http://www.dailycoding.com/Posts/the_script_tag_runatserver_problem_solution_using_resolveurl.aspx


Try embedding the Flash object in the body of your html page

<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>

I guess embedSWF is a javascript function to write out the object tag


Yes, you need to add swf as a IIS 7 mime type per site. I had this same issue with .mp4 files

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜