web-dev-qa-db-ja.com

Visual Studioを使用したSVGおよびWebテスト用にIISを構成する方法は?

Svg画像を含むシンプルなWebページがあるとします。

<img src="foobar.svg" alt="not working" />

このページを静的なHTMLページとして作成して直接表示すると、svgが表示されます。このsvgのアドレスを入力すると、表示されます。

しかし、これを.aspxページとして作成し、Visual Studioから動的に起動すると、altテキストが表示されます。このsvgのアドレスを(ローカルファイルではなくlocalhostから)入力すると、ブラウザは表示せずにダウンロードを試みます。

IIS(サーバー全体-"image/svg + xml"の場合)でMIMEタイプを既に定義し、IISを再起動しました。以前と同じ効果です。

質問:何をしたらいいですか?

更新

WireSharkは動作しません(ドキュメントにあります)。RawCapも試しましたが、接続を追跡できません(奇数)。幸運なことにFiddlerは動作しました。

クライアントから:

GET http://127.0.0.1:1731/svg/document_edit.svg HTTP/1.1
Host: 127.0.0.1:1731
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:10.0.1) Gecko/20100101 Firefox/10.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive

サーバーからの回答:

HTTP/1.1 200 OK
Server: ASP.NET Development Server/10.0.0.0
Date: Thu, 16 Feb 2012 11:14:38 GMT
X-AspNet-Version: 4.0.30319
Cache-Control: private
Content-Type: application/octet-stream
Content-Length: 87924
Connection: Close

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->

<svg
   xmlns:

*** FIDDLER: RawDisplay truncated at 128 characters. Right-click to disable truncation. ***

参考までに、ここにFiddlerの便利なQ&Aを示します: asp-net-applicati

14
greenoldman

Fiddlerトレースから、組み込みのVisual Studio Webサーバーを使用してページを提供しているように見えます。

Server: ASP.NET Development Server/10.0.0.0

これがIIS7によって提供されていた場合、次のようになります。

Server: Microsoft-IIS/7.5

組み込みのVisual Studio Webサーバーには、提供できるMIMEタイプの限定されたセットしかなく、IIS7に設定したMIMEタイプの知識がありません。私はしばらく前にスタックオーバーフローで同様の問題への回答を書きました:

ASP.NET開発サーバーを使用したMIMEタイプの設定

組み込みサーバーは.svgファイルを次のように提供しています:

Content-Type: application/octet-stream

これが、ブラウザがダウンロードを促す原因となっている可能性があります。

Visual Studioで、IIS Expressを使用していることを確認します。サイトのプロジェクトプロパティを開き、垂直タブリストから[Web]タブを選択します。

enter image description here

IIS 7.5 Expressがインストールされていない場合は、ここから入手できます。

http://www.Microsoft.com/download/en/details.aspx?id=1038

最大限に活用するには、Visual Studio 2010 Service Pack 1が必要です。

http://support.Microsoft.com/kb/983509

IIS Expressのサポート

Visual Studio 2010 SP1では、インターネットインフォメーションサービス(IIS)7.5 ExpressをWebサイトおよびWebアプリケーションプロジェクトのローカルホスティングサーバーとして使用できます。

IIS 7.5 ExpressはSP1に含まれていないため、別途ダウンロードする必要があります。詳細については、次のブログ: http://weblogs.asp.net/scottgu/archive/2011/01/03/vs-2010-sp1-beta-and-iis-developer-express.aspx

完了したら、.svg MIMEタイプをアプリケーションのweb.configファイルに追加できます。

<configuration>
   <system.webServer>
      <staticContent>
         <mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
      </staticContent>
   </system.webServer>
</configuration>
14
Kev

これに対する私の回避策は、svgのcontent-typeを上書きする独自のhttphandlerをローカルに作成することでした。

public class SvgHandler : IHttpHandler
{

    public bool IsReusable
    {
        get { return false; }
    }

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "image/svg+xml";
        context.Response.BinaryWrite(File.ReadAllBytes(context.Request.PhysicalPath));
        context.Response.End();
    }
}

そしてweb.configに私は追加しました:

<httpHandlers>
  <add verb="*" path="*.svg" type="SvgHandler" />
</httpHandlers>

このソリューションでは、IIS expressを使用する必要はありません。通常の開発サーバーをVisual Studio 2010で使用できます。

2
Robin Karlsson

上記のように、Cassiniはweb.configのこれらの設定を無視するため、代わりにIIS Expressを(VSプロジェクト設定で)使用する必要があります) https://stackoverflow.com/questions/5924647/setting-mime-types-using-the-asp-net-development-server

IISまたはIIS Expressの場合、管理UIまたはweb.configを使用してMIMEタイプを構成する方法の詳細については、次を参照してください。 http: //4rapiddev.com/tips-and-tricks/add-mime-type-flv-mp4-in-iis-for-a-website-or-global/ および http:// 4rapiddev。 com/tips-and-tricks/add-mime-type-flv-mp4-to-web-config-in-iis-7 /

2
George Birbilis

私は、Kevの回答を使用しました。

  1. インストールIIS 8.0 Express from Web Platform Installer
  2. IIS Expressを使用するようにプロジェクトのプロパティを変更し、そのための仮想ディレクトリを作成する
  3. Web.configの構成に追加→system.webServer
<staticContent>
    <remove fileExtension=".svg" />
    <mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
</staticContent>
2

IIS7を実行していますが、IISでサーバーを右クリックし、プロパティを選択することでこれを修正できました。次に、[MIMEタイプ...]ボタンをクリックしました。次に[新規]をクリックしました。拡張子については.svgと入力しました。MIMEタイプについてはimage/svg + xmlと入力しました。次に、すべて保存して、コマンドプロンプトからiisresetを実行しました。

1
Troy Tabor

IISにアクセスできる場合、これにより問題も修正されます: http://httpjunkie.com/2014/884/svg-no-iis/

0
Rahatur