Image Silverlight:没有文件扩展名的图像源不显示

Image Silverlight:没有文件扩展名的图像源不显示,image,silverlight-4.0,Image,Silverlight 4.0,在我的Silverlight项目中,源URI不包含文件扩展名的图像不会显示,尽管文档中说应该显示 我将图像源设置为: imgCompanyLogo.Source = new BitmapImage(new Uri(Application.Current.Host.Source, "/Files/" + logoName)); 现在,如果“logoName”包含文件扩展名(例如“.png”),则图像显示良好,但如果文件存储时没有扩展名,则图像不会显示 这似乎与说明以下内容的文件相矛盾: URI命

在我的Silverlight项目中,源URI不包含文件扩展名的图像不会显示,尽管文档中说应该显示

我将图像源设置为:

imgCompanyLogo.Source = new BitmapImage(new Uri(Application.Current.Host.Source, "/Files/" + logoName));
现在,如果“logoName”包含文件扩展名(例如“.png”),则图像显示良好,但如果文件存储时没有扩展名,则图像不会显示

这似乎与说明以下内容的文件相矛盾:

URI命名中不一定需要特定于格式的文件扩展名,如.png,但如果检索到的文件未确定为有效的图像格式,则会引发运行时异常

我也没有得到任何运行时异常。 这是一个已知的问题还是我遗漏了一些简单的东西

谢谢


PS:稍微有点扭曲,图像在调试时显示良好,而不是在系统部署时…

我做了一些测试,问题似乎是由于服务器的响应

如果尝试在项目中使用.png并将生成操作集设置为资源,则无论扩展名如何,都将加载这两个图像

现在,如果您尝试在服务器上托管图像,它将不会有相同的行为。实际上,如果您试图直接在浏览器中浏览指向图像的链接而不使用扩展名,则会产生其他结果。在Chrome上,它将下载文件,在IE上,它将结果显示为纯文本

那是因为MIME类型。应返回类型为image\png的png

.htaccess有一个技巧可以设置MIME类型,但您需要指定哪个扩展名。它的工作原理如下:

AddType image\png您的扩展名[Extension2][Extension3]

如果您想查看图像控件上没有加载图像的原因,可以向ImageFailed事件添加eventhandler:

<Image Source="..." ImageFailed="Image_ImageFailed" />

但您将看到的错误消息并没有真正的帮助:


ErrorException={System.Exception:AG_E_NETWORK_ERROR}

有趣的是,我不知道.htaccess技巧,我要玩这个。我注意到了基本的浏览行为,但考虑到文档,我希望他们已经在幕后为图像实现了它。干杯