ASP.NETで.jsonファイルのダウンロードを許可する方法


125

古いASP.NETサイトからの* .jsonファイルのダウンロードを有効にするにはどうすればよいですか(IIS6は信じられます)?

JSONファイルの代わりに404ページを取得しています。

web.configファイルを作成する必要がありますか?何が入っているの?


1
おそらくMIMEタイプ追加する必要があります。
vcsjones 2011年

1
JavaScriptで使用したり、HDに保存したりするには?
レミー

jQuery.ajax(url:...を介してアクセスしたい
Lea Hayes、

2
ローカルIISにリストが作成された後にそれを追加すると、次の展開時に重複リストから500サーバーエラーがスローされる可能性があるため、コメント化します。
トム・マガモ

回答:


118

IIS 6にJSON MIMEタイプを追加します。MSDNの「MIMEタイプの構成(IIS 6.0)」の指示に従います

  • 拡張子:.json
  • MIMEタイプ:application / json

変更後にIISを再起動することを忘れないでください。

更新:IIS7以降でこれを行う簡単な方法があります。運用担当者は特にIIS6のヘルプを要求したので、この答えはそのままにしておきます。しかし、IIS6が非常に古いにもかかわらず、この回答は依然として多くのトラフィックを獲得しています。新しいものを使用しているといいので、新しいIIS7または新しいバージョンを使用している場合は、以下の@ProVegaの回答を参照して、それらの新しいバージョンの簡単な解決策を確認してください。


1
乾杯ですが、これはweb.configまたはグローバルコードファイル以外にアクセスできない共有ホスティングパッケージ上にあります
Lea Hayes

IIS 6.0の設定にアクセスできず、プロバイダーのサポートでMIMEタイプが追加されない場合は、プロバイダーを切り替えるか、プロバイダーがIIS 7.0を備えた新しいサーバーに提供する場合は、そのサーバーに切り替える必要があります。これをサポートします。
Jon Adams、

1
はい、ASP.NetはASPXハンドラーまたは単純なページを介してファイルを渡すことができますが、その要求はASP.Netに渡されないため、URLで.jsonファイルタイプを使用できません。ランタイム。ASPXランタイムを通過するものでなければなりません。IIS設定にアクセスできない場合は、のような既存の拡張機能の1つである必要があります.ASPX。繰り返しますが、IIS7でサーバーに切り替えると、さらに多くの簡単なソリューションが提供されます。
Jon Adams

1
IISを完全に再起動するのではなく、アプリプールを再起動するだけで十分です(私の場合はそれでした)。
kltft

1
@kltft True、アプリプールの再起動は更新をトリガーしますが、もちろんそのプールに対してのみです。これらの手順には、すべてのユーザーの設定を変更することが含まれ、一貫性のない設定レベルに設定すると、後で混乱しやすくなります。安全と健全性のために、iisプロセス全体を再起動することをお勧めします。しかし、ピンチで、誰もが賛否両論に同意した場合、アプリプールの再起動が機能する可能性があります。
ジョンアダムス

211

サイトにサポートを手動で追加する場合は、system.webServerセクションのweb.configに以下を追加するだけです。

<staticContent>
    <mimeMap fileExtension=".json" mimeType="application/json" />
</staticContent>

これにより、IISの下に「ローカル」構成が追加されます。これはIIS6では機能しませんが、IIS7以降では機能します。


6
web.configフルパスを含めるように回答を更新しました。
GFoley83 2013

ライフセーバー、ありがとう:)
Gaurav123

1
どういうわけか、これは私のサイト全体を台無しにしました-CSSはもはや機能しません!
TheJeff

@TheJeff-それは私に起こりましたが、それは私が2つのstaticContent mimeMapを追加したためです。したがって、静的ファイルにアクセスしようとすると、いつでもこのエラーがCannot add duplicate collection entry of type 'mimeMap' with unique key attribute 'fileExtension' set to '.csv' 発生しました。重複を削除すると、問題ありません。
レッドピー

1
これはローカルで実行しているときの問題を修正しますが、ライブでプッシュするときは注意してください。IISでmimeMapがすでにグローバルに構成されている場合、500エラーが発生します。その場合は、単にweb.configからこの部分を削除してください。
エヴァン

20

解決策は、MIMEタイプにjsonファイル拡張子タイプを追加する必要があることです

方法1

IISに移動し、アプリケーションを選択してMIMEタイプを検索します

ここに画像の説明を入力してください

右パネルから追加をクリックします

ファイル名拡張子= .json

MIMEタイプ= application / json

ここに画像の説明を入力してください

MIMEタイプに.jsonファイルタイプを追加した後IIS再起動して jsonファイルにアクセスしてみます


方法2

そのアプリケーションのweb.configに移動し、この行を追加します

 <system.webServer>
   <staticContent>
     <mimeMap fileExtension=".json" mimeType="application/json" />
   </staticContent>
 </system.webServer>

15

(@ProVegaで提案されているように)mimetypeのサポートを追加するときは、追加する前にタイプを削除することもベストプラクティスです。これは、タイプのサポートがすでに存在するサーバーにデプロイするときの予期しないエラーを防ぐためです。次に例を示します。

<staticContent>
    <remove fileExtension=".json" />
    <mimeMap fileExtension=".json" mimeType="application/json" />
</staticContent>

mimeMapのみを追加すると、CSSスタイルが削除されることがあります。そのため、正しい方法は最初にそれを削除することです。ありがとう
ござい

IIS7 C:\Windows\System32\inetsrv\configファイル内の構成ファイルへのパス:applicationHost.config
OO

5

この問題が発生しただけで、MIMEタイプを追加できるようにIIS Expressの構成を見つける必要がありました。私にとっては、にあり、そこにC:\Users\<username>\Documents\IISExpress\config\applicationhost.config正しい「MIMEマップ」を追加することができました。


これが、IIS Expressを介して機能しない理由かもしれません。残念ながら、これはすべての開発マシンで構成する必要があるものではないため、json構成ファイルには.js拡張子を使用することをお勧めします。
jpierson 2014年

あなたはまたのWeb.Configでそれを行うことができます-この回答を見stackoverflow.com/a/19517275/643761
Simcha Khabinsky

@SimchaKhabinsky私にとって、web.configは十分ではありませんでした。
Jean-Bernard Pellerin

3
web.configで十分でない場合は、<mimeMap>ノードの前に次の行を追加する必要がある場合があります<remove fileExtension=".json" />。applicationhost.config(またはmachine.config)を変更する必要はありません。そうは言っても、新しいサイトを頻繁に作成し、各サイトのweb.configを変更する必要がない場合は、これらのファイルを変更すると役立つ場合があります。開発環境ではこれでうまくいくかもしれませんが、本番環境ではmachine.configに触れられないことが多いので、web.configに変更を加えることをお勧めします。
gilly3 2015年

1
@ gilly3に感謝-それremoveが私にとっての鍵でした
ハリヨット

0
  1. C:\ Users \ username \ Documents \ IISExpress \ configに移動します
  2. Visual Studioまたはお気に入りのテキストエディターでapplicationhost.configを開きます。
  3. mimeMapという単語を検索すると、たくさん見つかります。
  4. リストの一番上に次の行を追加します。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.