1

次のルートを作成しました

 routes.MapRoute("ThumbnailRoute",// Route name
           "Image/{action}/{session}/{parentId}/{fileName}/{ctype}/{thumbNailSize}", // URL with parameters
           new { controller = "Image", action = "GenerateThumbnail", session = "", parentId = "", fileName = "", ctype = "", thumbNailSize = 70 },  // Parameter defaults 
           new { controller = @"[^\.]*", action = @"[^\.]*" });

私の拡張メソッドは、次のような文字列を返します。これは、img タグの src 属性になります。

 return string.Format("/{0}/{1}/{2}/{3}/{4}/{5}/{6}", controller, action, session, parentId, fileName, ctype, thumbNailSize);

ページを右クリックして開発環境と本番環境の両方のプロパティを選択すると、src av img タグは同じです (http://localhost/Image/GenerateThumbnail/de-DE/121/0beac6da-7c09-4faf-ad4b-48326f9d337e. jpg/jpeg/70) ドメイン名 (localhost、www.domain.com) のみが異なりますが、イメージは製品には表示されません。ご協力いただきありがとうございます

4

2 に答える 2

0

あなたがしたようにURLをハードコーディングしないでください。常に URL ヘルパーを使用します。問題は、アプリケーションを IIS にデプロイするときに、仮想ディレクトリ名が存在することです。したがって、正しい URL は次のとおりです。

http://foo.com/MyAppName/Image/GenerateThumbnail/de-DE/121/0beac6da-7c09-4faf-ad4b-48326f9d337e.jpg/jpeg/70

それ以外の:

http://foo.com/Image/GenerateThumbnail/de-DE/121/0beac6da-7c09-4faf-ad4b-48326f9d337e.jpg/jpeg/70

URL をハードコーディングしているため、404 が返されます。

そのため、 RouteUrlメソッドを使用して、この仮想ディレクトリがあればそれを考慮して生成します。URL を作成するために文字列の書式設定を使用しないでください。

public ActionResult Index()
{
    string url = Url.RouteUrl("ThumbnailRoute", new
    {
        action = "GenerateThumbnail",
        controller = "Image",
        session = session,
        parentId = parentId,
        fileName = fileName,
        ctype = ctype,
        thumbNailSize = thumbNailSize
    });

    ...
}
于 2012-06-14T05:26:21.573 に答える
0

製品バージョンで URL が問題ないように見える場合、問題はルーティングではなく、アクション メソッドのコードにある可能性があります。

本番 URL にアクセスしたときにブラウザーから得られる応答を確認しましたか?

http://www.domain.com/Image/GenerateThumbnail/de-DE/121/0beac6da-7c09-4faf-ad4b-48326f9d337e.jpg/jpeg/70を参照すると、どのような応答が得られますか?

于 2012-06-14T00:39:27.647 に答える