2016-07-29 51 views
0

在我看来,我有类似如下的@在查看Url.Action有时不能正常工作

<img src="@Url.Action("GetImage", new {param1 = ViewBag.Param1, page = ViewBag.Page })" alt="" /> 

这工作一些时间。但是,时不时装载图像。我在GetImage ActionResult中设置了一个断点,当图像没有加载时,断点没有被击中。

这种行为似乎是完全随机的,如果我只是一遍又一遍地刷新页面有时它有时它不起作用。任何想法或建议?

+0

请显示你的代码并解释你想问什么? –

+0

对不起,代码没有显示。希望这个问题现在应该是自我解释。 –

+0

当图像不呈现时,请检查页面的视图源,并确保图像源的url有效(参数值)。 – Shyju

回答

0

观点:

<img src="@Url.Action("GetImage",new {name="google.png"})" alt="" /> 

和控制器动作看起来像下面

[AcceptVerbs(HttpVerbs.Get)] 
public FileResult GetImage(string name) 
{ 
    var path = @"C:\VS2015\Images\" + name; 
    return new FileStreamResult(new FileStream(path,FileMode.Open),"image/jpeg"); 
} 

希望你的控制器动作的代码看起来像上面。 它会正常工作。

0

(应该是一个评论,但太长...)

开始之前诊断服务器端的问题,找出实际的问题是什么。

打开浏览器开发工具(F12赢),切换到网络选项卡并保持刷新,直到出现问题。 (注意:当开发工具打开时,有一项设置可以禁用浏览器缓存,请确保取消选中它以准确复制情况)

当问题发生时,向下滚动到图像请求并检查ti是否为从服务器或本地缓存中获取。如果来自服务器,应该有一个状态代码给你一个提示(404/500),响应主体可以包含有用的信息(如果你的服务器被配置为显示错误,那么就像一个完整的堆栈跟踪)。至少,服务器响应意味着已建立连接,并且服务器日志中应该有一些有用的信息。

这也可能是问题与浏览器缓存或客户端和服务器之间的代理。

最后,如果它是服务器端的问题,并且在浏览器中看不到错误详细信息,请通过服务器事件日志查找错误。所有.Net错误都记录在那里(至少默认)。

一旦您获得了更多关于导致问题的信息,请编辑您的问题,我们可以从那里开始。