【问题标题】:Silverlight: Image Source with no file extension doesn`t displaySilverlight:不显示没有文件扩展名的图像源
【发布时间】:2011-11-16 07:43:25
【问题描述】:

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

我这样设置图片源:

imgCompanyLogo.Source = new BitmapImage(new Uri(Application.Current.Host.Source, "/Files/" + logoName));

现在,如果“logoName”包含文件扩展名(例如“.png”),则图像可以正常显示,但如果文件存储时没有扩展名,则无法正常显示。

这似乎与here 的文档相矛盾,其中指出:

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

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

谢谢!

PS:稍微扭曲一下,调试时图像显示正常,而不是部署系统时...

【问题讨论】:

    标签: image silverlight-4.0


    【解决方案1】:

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

    如果您尝试在项目中使用 .png 并将 Build Action 设置为 Resource,则无论扩展名如何,两个图像都会加载。

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

    这是因为 MIME 类型。应返回带有 image\png 类型的 png。

    .htaccess 有一个技巧来设置 MIME 类型,但您需要指定哪个扩展名。它的工作原理是这样的:

    AddType image\png yourExtension [Extension2] [Extension3] ..

    如果你想看看为什么图像没有加载到你的 Image 控件上,你可以在 ImageFailed 事件中添加一个事件处理程序:

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

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

    ErrorException = {System.Exception: AG_E_NETWORK_ERROR}

    【讨论】:

    • 有趣,不知道 .htaccess 技巧,我打算玩一下。我注意到了基本的浏览行为,但鉴于文档,我希望他们已经在幕后为图像实现了它。干杯!
    猜你喜欢
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 2012-12-24
    • 2015-11-15
    • 2017-03-20
    • 1970-01-01
    • 1970-01-01
    • 2012-10-16
    相关资源
    最近更新 更多