我有一個操作方法,我用來檢索用戶的圖片,但是我的一些用戶可能已經使用Facebook登錄,我不想返回存儲圖片,但是從Facebook的人,所以我想是這樣的:ASP.NET MVC:重定向只爲圖像第一次工作
public ActionResult Picture(long id)
{
var user = UsersService.GetUser(id);
if (user.IsConnectedWithFacebook)
{
var url = "http://graph.facebook.com/" + user.GetFacebookId() + "/picture?type=square";
return Redirect(url);
}
return File(user.PictureData, user.PictureContentType);
}
,並在網頁上我只是用:
<img src='@Url.Action("Picture", new {User.Id})' />
這工作完全在我第一次加載頁面,但是第二次圖像不顯示。我檢查了呼叫只是行動,第二次顯示的頁面與
"Object moved to here."
這就是爲什麼img標記不加載任何圖像。
有沒有辦法來防止這種情況發生?我在其他一些線程中讀到人們推薦返回301(而不是由Redirect返回的302),但它返回與鏈接相同的頁面(並且實際請求返回200而不是301或302)。
任何想法如何強制它總是返回重定向?
我真的不想添加邏輯來選擇要加載到頁面的圖像,我也不想在服務器上請求數據,然後將其返回到頁面,因爲它可能很慢,成爲帶寬問題。
感謝您的幫助。
關於帶寬和性能,重定向選項需要兩次到服務器的往返服務才能提供圖像。這是一個相關的問題:http://stackoverflow.com/questions/3778347/is-it-ok-to-http-redirect-images – 2012-04-18 03:56:31
我知道這一點,但我很有信心,它會很多更好地向FB服務器提出第二個請求。在另一種情況下,我將不得不在控制器中爲FB服務器創建一個Web請求,獲取數據並將其返回給客戶端。這意味着第二個請求會發生,但在這種情況下,我的服務器將浪費帶寬,而不是客戶端)。 – willvv 2012-04-18 16:39:47
我看不出任何你需要將實際圖像從FB傳輸到Web服務器的原因。我同意,這將是一個非常糟糕的設計。絕對不是我提議的。 – 2012-04-18 17:05:26