4

ASP.NET MVCサイトがあり、ローカルで実行すると問題なく動作します。そのサイトをIIS7に展開すると、リソースへのすべてのリンク(つまり、スクリプトファイル、イメージ、cssファイル)が壊れます。これはルートの問題でしょうか、それともIIS設定でしょうか?

これが私のルートです:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("elmah.axd");
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        "Search",
        "Basic/Page/{page}",
        new { controller = "Search", action = "Basic" }
    );

    routes.MapRoute(
        "Default",                                                                          // Route name
        "{controller}/{action}/{id}",                                                       // URL with parameters
        new { controller = MVC.Welcome.Name, action = MVC.Welcome.Actions.Index, id = "" }  // Parameter defaults
    );
}

編集:

T4MVCテンプレートを使用してすべてのコンテンツを参照します。〜/ content /でパスを指定する場合、テンプレートは正しいです。問題は、htmlが生成されるときに、出力に「〜」が含まれず、/content/だけであるということです。

<img src="<%= Links.Content.Images.logo_png %>" alt="Logo" />

<img src="/Content/Images/logo.png" alt="Logo" />

ノート:

実際の問題は、web.configのこの行に問題があることでした。2011年1月1日は金曜日ではなく、土曜日であることが判明しました。どういうわけか、それはまだその行が好きではありませんでした。

<clientCache httpExpires="Fri, 1 Jan 2011 15:30:00 UTC" cacheControlMode="UseExpires"/>

これに変更すると問題なく動作します。

<clientCache cacheControlMode="UseExpires" httpExpires="Tue, 19 Jan 2038 03:14:07 GMT" />

この問題で他の人に役立つことを期待して、ここに追加します。

ありがとう!

4

5 に答える 5

2

ルートまたはIIS設定である可能性は低いです。私がこれを見たのは、一般的に、どちらかのリソースが利用できない、つまりそこにないためです。

また、アクセスしようとしているフォルダのセキュリティが設定されていて、デフォルトの.netユーザーにアクセスが許可されていない場合もあります。

リソースへのパスが正しくコーディングされていません。/contentの代わりに〜/contentを使用するか../../..etcを使用すると役立つ場合があります。

于 2010-01-22T03:29:36.627 に答える
1

フォルダのアクセス許可を確認してみてください-非標準のフォルダ(wwwrootではありません)にいますか?IIS_IUSRSグループに、フォルダーとサブフォルダーに対する読み取りと実行のアクセス許可があることを確認してください。それでも問題が解決しない場合は、権限を変更して、一時的に全員にフルコントロールを付与してみてください。これが、権限の問題であるかどうかを確認するだけです。

于 2010-01-22T07:29:53.033 に答える
1

ビルドアクションがコンテンツに設定されていることを確認してください。

于 2010-01-22T02:24:35.840 に答える
1

問題がわかりません。〜/はブラウザが理解できないサーバー側の構文であるため、T4MVCがクライアントに〜/パスを出力するのは誤りです。必要に応じて、T4MVC.settings.t4にアクセスして、この処理を変更できることに注意してください。

// You can change the ProcessVirtualPath method to modify the path that gets returned to the client.
// e.g. you can prepend a domain, or append a query string:
//      return "http://localhost" + path + "?foo=bar";
private static string ProcessVirtualPathDefault(string virtualPath) {
    // The path that comes in starts with ~/ and must first be made absolute
    string path = VirtualPathUtility.ToAbsolute(virtualPath);

    // Add your own modifications here before returning the path
    return path;
}

したがって、必要なものを返すようにすることはできますが、〜/パスを返すことは役に立たないと思います。

私はこの問題を少し誤解しているかもしれません。

于 2010-02-04T17:35:22.867 に答える
0

サイトまたはWebアプリケーション->認証->匿名認証を有効にするに移動します。これが機能する場合は、問題がなければそのままにするか、権限を適切に調整できます。

于 2019-04-19T22:41:26.193 に答える