クラシック モードではルート構成を処理できないと思います。ここに記載されているように - http://www.asp.net/mvc/tutorials/older-versions/deployment/using-asp-net-mvc-with-different-versions-of-iis-cs - 追加を実行する必要がありますIIS 7.0 をクラシック モードで使用する場合の構成、または ASP.NET フレームワーク (aspx、axd、ashx) にマップされるファイル拡張子を使用する場合。
以下の構成を使用して、IIS 7 に対してクラシック モードを動作させることができました。
web.config (部分的で preCondition="integratedMode" を使用):
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<add path="servicestack*" name="ServiceStack.Factory" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack"
verb="*" preCondition="integratedMode" />
</handlers>
</system.webServer>
そして、ASP.NET にアクセスするためにルートに .aspx を追加しました (上記のリンクにリストされている他のソリューションも使用できると思います)。
Routes
.Add<Hello>("/hello.aspx")
.Add<Hello>("/hello.aspx/{Name}");
私はに要求をすることができますhttp://localhost/hello.aspx and http://localhost/hello.aspx?name=Test
更新 1
<system.webServer>
クラシック モードで実行すると、すべての IIS 7 ( ) 要素を削除できることがわかりました。私の web.config 全体は以下の通りです。要素のパス属性は何<httpHandlers>
ですか? おそらく、パスが異なるために 404 が表示されるのでしょうか?
<?xml version="1.0"?>
<configuration>
<system.web>
<httpHandlers>
<add path="servicestack*" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*"/>
</httpHandlers>
<compilation debug="true"/>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
</system.webServer>
</configuration>
コメントの回答:
したがって、これはあなたの例のように path="api*" と機能的に同等ですか?
いいえ。ここを参照してください: http://msdn.microsoft.com/en-us/library/b6x6shw7%28v=vs.100%29.aspxここ
でセクション 2 を見てください: http://www.servicestack.net/ ServiceStack.Hello/要素には、カスタム パスの<httpHandler>
path 属性があります。
また、IIS Express を Visual Studio の開発サーバーとして使用します。標準の開発サーバー内では発生しない IIS 7 クラシック モードの問題をシミュレートできるはずです。http://www.microsoft.com/web/gallery/install.aspx?appid=IISExpress