Embedded image in portable area not showing on deployment
-
I am using MVC 2 on VS2010 and IIS 7. I created a portable area with some images embedded into it. I tried to create routing rule two ways at the time of portable area registeration. Following are the two ways I tried. Method 1
context.MapRoute("ResourceRoute", "login/resource/{resourceName}",
new { controller = "EmbeddedResource", action = "Index" },
new string[] { "MvcContrib.PortableAreas" });context.MapRoute( "login", "login/{controller}/{action}", new { controller = "login", action = "index" });
RegisterAreaEmbeddedResources();
In this case I tried to access the image using Url.Resource() Method 2
context.MapRoute(
"login",
"login/{controller}/{action}",
new { controller = "login", action = "index" });RegisterDefaultRoutes(context);
RegisterAreaEmbeddedResources();In this case I tried to access the image using Url.Content() Following are scenarios where things are working fine. 1. When I run the application on my local development server (Ctrl + F5). 2. When run application after publishing it on my localhost. 3. When I run the application on different development server (Ctrl + F5), say on my friend's box. But it does not render image (right now I have only images as static resource. No CSS or JS) if I publish on someone else's system, say localhost on my friend's box. Everything else is working fine except for the image rendering. I have tried all possible means to get it rendered in the situation it is failing but all in vain. I need some help here. Anyone please? Thank you in advance!
-
I am using MVC 2 on VS2010 and IIS 7. I created a portable area with some images embedded into it. I tried to create routing rule two ways at the time of portable area registeration. Following are the two ways I tried. Method 1
context.MapRoute("ResourceRoute", "login/resource/{resourceName}",
new { controller = "EmbeddedResource", action = "Index" },
new string[] { "MvcContrib.PortableAreas" });context.MapRoute( "login", "login/{controller}/{action}", new { controller = "login", action = "index" });
RegisterAreaEmbeddedResources();
In this case I tried to access the image using Url.Resource() Method 2
context.MapRoute(
"login",
"login/{controller}/{action}",
new { controller = "login", action = "index" });RegisterDefaultRoutes(context);
RegisterAreaEmbeddedResources();In this case I tried to access the image using Url.Content() Following are scenarios where things are working fine. 1. When I run the application on my local development server (Ctrl + F5). 2. When run application after publishing it on my localhost. 3. When I run the application on different development server (Ctrl + F5), say on my friend's box. But it does not render image (right now I have only images as static resource. No CSS or JS) if I publish on someone else's system, say localhost on my friend's box. Everything else is working fine except for the image rendering. I have tried all possible means to get it rendered in the situation it is failing but all in vain. I need some help here. Anyone please? Thank you in advance!
-
Have you taken a look at the html in the browser source, to verify it's correct when it doesn't work?
Yes I have checked. They are all good at all time. For Method 1 I used
Url.Resource("Images.aw1.png")
Here the image was located under Images folder which was under the root of Portable area project. URL of the image is rendered as "http://locahost/mysite/login/resource/Images.aw1.png" For Method 2 I used
Url.Content("~/LoginPortableArea/Images/aw1.png")
Here LoginPortableArea is name of the area and images are located in the folder Content/Images which was under the root of portable area project. URL of the image is rendered as "http://localhost/mysite/LoginPortableArea/Images/aw1.png". So we see in both the cases url is correctly generated and the image also gets rendered correctly on localhost of my box but not elsewhere.
-
Yes I have checked. They are all good at all time. For Method 1 I used
Url.Resource("Images.aw1.png")
Here the image was located under Images folder which was under the root of Portable area project. URL of the image is rendered as "http://locahost/mysite/login/resource/Images.aw1.png" For Method 2 I used
Url.Content("~/LoginPortableArea/Images/aw1.png")
Here LoginPortableArea is name of the area and images are located in the folder Content/Images which was under the root of portable area project. URL of the image is rendered as "http://localhost/mysite/LoginPortableArea/Images/aw1.png". So we see in both the cases url is correctly generated and the image also gets rendered correctly on localhost of my box but not elsewhere.
Packer L wrote:
Looks like the image is hard coded to localhost, using a full url. With a partial url, you don't have to worry about the server name, the browser will take care of that. If an image is embedded, then that image in the server control project must be marked as embedded in the property panel, so it gets compiled into the DLL. When the image is called for duty, the image is extracted from a webresource.axd, and the url looks sort of like ~/webresource.axd/sfdf.png I'm pretty sure you can't embed an image in a web project.
-
Packer L wrote:
Looks like the image is hard coded to localhost, using a full url. With a partial url, you don't have to worry about the server name, the browser will take care of that. If an image is embedded, then that image in the server control project must be marked as embedded in the property panel, so it gets compiled into the DLL. When the image is called for duty, the image is extracted from a webresource.axd, and the url looks sort of like ~/webresource.axd/sfdf.png I'm pretty sure you can't embed an image in a web project.
No the image is not hard coded with localhost. For the sake of clarity I mentioned it like that. It actually is rendered as "/mysite/login/resource/Images.aw1.png" And as a matter of fact images are being embedded in web app assembly. This can be done by setting image property "Build Action" to "Embedded Resource". I can guarantee that embeding of resource is working fine or else image would not have got rendered on my local too. Moreover I also checked the DLL through a reflector and saw that images were indeed embedded there.
-
No the image is not hard coded with localhost. For the sake of clarity I mentioned it like that. It actually is rendered as "/mysite/login/resource/Images.aw1.png" And as a matter of fact images are being embedded in web app assembly. This can be done by setting image property "Build Action" to "Embedded Resource". I can guarantee that embeding of resource is working fine or else image would not have got rendered on my local too. Moreover I also checked the DLL through a reflector and saw that images were indeed embedded there.
-
No but it is still not working. Everything looks good but it is still not working. Hints please!
With all due respect, I offered sound and sane suggestions in diagnosing your issue, but you turned them all down. If you look at the browser source, and take the image url and paste in your browser url, you should be able to pull up the image, that simple. But I have worked with folks in my lifetime ( 48 years ), in which each time they claim that they have done that, and rule out any suggestion offered, which is YOU! You can't be helped, until you get humbled or something, or perhaps open up your mind to critical thinking. Sorry, I'm done. jkirkerx
-
With all due respect, I offered sound and sane suggestions in diagnosing your issue, but you turned them all down. If you look at the browser source, and take the image url and paste in your browser url, you should be able to pull up the image, that simple. But I have worked with folks in my lifetime ( 48 years ), in which each time they claim that they have done that, and rule out any suggestion offered, which is YOU! You can't be helped, until you get humbled or something, or perhaps open up your mind to critical thinking. Sorry, I'm done. jkirkerx
Well due respect to you too, I had already tried all your sane diagnosing methods before I even thought of coming online for help. I just wanted to say that I have tried them already and in-fact I tried them again on your suggestion but it looks like you took it different way and that is not my fault. Just because you have 48 years of experience doesn't mean your suggestion has to be spot on. And so far opening of mind for critical thinking is concerned, point one, I know what I am and don't need certificate from anyone and point two, do you really think you offered suggestion that required critical thinking? And so far being humble is concerned, I always am but not now. This is the worst online reply that I ever gave to anyone and sorry to say but you forced me to do that. I am not sorry at all for replying to you like this. Packer
-
Well due respect to you too, I had already tried all your sane diagnosing methods before I even thought of coming online for help. I just wanted to say that I have tried them already and in-fact I tried them again on your suggestion but it looks like you took it different way and that is not my fault. Just because you have 48 years of experience doesn't mean your suggestion has to be spot on. And so far opening of mind for critical thinking is concerned, point one, I know what I am and don't need certificate from anyone and point two, do you really think you offered suggestion that required critical thinking? And so far being humble is concerned, I always am but not now. This is the worst online reply that I ever gave to anyone and sorry to say but you forced me to do that. I am not sorry at all for replying to you like this. Packer
Please accept my apology. I get frustrated sometimes, and probably should of just been more direct. On the other forum, I just ignore the questions now, and don't get involved anymore. Diagnostics: Sometimes you have to work backwards, and look at the final results in the browser output. If the results don't work, you have to pick it apart. So you start at the image tag, inspect the url. test the url in the browser bar. There's a ton of information in the browser source, it just takes some learning to read the info and understand it. If you code in CSharp, then the principals are the same. Now you work forward on the source, to make adjustments to what is sent back to the browser. The most common mistakes I see is in the use of Client Script Manager, and not registering the CS in OnInit. The 2nd mistake is not using CS WebResuorceUrl as the url in the image tag. The image url is a webresource. Sample Code in vb. This is for you to just get an idea of the stucture and use of of the client script manager, and the webresource url.
Protected Overrides Sub OnInit(ByVal e As System.EventArgs)
MyBase.OnInit(e)Controls.Clear() Dim cs As ClientScriptManager = Me.Page.ClientScript Dim rsType As Type = Me.GetType() Select Case \[Localization\] Case 0 rm = New ResourceManager("Admin\_PP\_Standard.labels\_en", Assembly.GetExecutingAssembly()) ci = New CultureInfo("en-US") Case 1 rm = New ResourceManager("Admin\_PP\_Standard.labels\_fr", Assembly.GetExecutingAssembly()) ci = New CultureInfo("fr-CA") Case 2 rm = New ResourceManager("Admin\_PP\_Standard.labels\_es", Assembly.GetExecutingAssembly()) ci = New CultureInfo("es-MX") End Select Dim Comment As LiteralControl Comment = New LiteralControl Comment.Text = "<!-- SignUp V1.1 for ASP.NET 4.0 -->" & vbCrLf Controls.Add(Comment) Dim img\_Name As String = Nothing Dim img\_Email As String = Nothing Dim img\_ProgressIndicator As String = Nothing Dim img\_Connect As String = Nothing Dim img\_BG\_ModalProgress As String = Nothing Select Case \[Page\_ColorTheme\] Case 0 'Light img\_Name = cs.GetWebResourceUrl(rsType, "Footer\_SignUp.ico-form\_person\_light.png") img\_