2011-09-08 7 views
5

を取り除く:WCFは、私はこれらの記事に従うことで、私のWCF .NET .SVC拡張子を持つ4.0サービスにServiceRouteを追加することができるよ.SVC拡張

  1. Post 1
  2. Post 2

しかし、どうすれば ".svc"拡張子を削除できますか?

私の実際のサービスファイル

Catalog.svcと呼ばれ、それらの記事に従った後、私はcsw.svc

私のGlobal.asaを使用して同じサービスにアクセスすることができるよさ.csファイル:

protected void Application_Start(object sender, EventArgs e) 
{ 
    RegisterRoutes(RouteTable.Routes); 
} 

private void RegisterRoutes(RouteCollection routes) 
{ 
    routes.Add(new ServiceRoute("csw.svc", new WebServiceHostFactory(), typeof(CSW_ebRIM_WebService.Catalog))); 
} 

私のWeb.config:

しかし
... 
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" > 
    <serviceActivations> 
     <add factory="System.ServiceModel.Activation.ServiceHostFactory" 
      relativeAddress="~/csw.svc" 
      service="CSW_ebRIM_WebService.Catalog"/> 
    </serviceActivations>   
</serviceHostingEnvironment> 
<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"> 
     <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
    </modules> 
    <handlers> 
     <add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd"/> 
    </handlers> 
</system.webServer> 

私が言ってグローバルと私が得るweb.configとエラーの両方から.svc拡張子を削除する場合:

登録relativeAddressセクション の下で '〜/ CSW'「system.serviceModel/serviceHostingEnvironment/ の「serviceActivations」に拡張子がありません。私はweb.config.svc拡張を元に戻すだけグローバルからそれを削除した場合

私が取得:

値はnullにすることはできません。 パラメータ名:コントラクト

説明:現在のWeb 要求の実行中に未処理の例外が発生しました。 エラーの詳細とコード内のどこで発生したのかについては、スタックトレースを確認してください。

例外の詳細:System.ArgumentNullException:値にnullを設定することはできません。 パラメータ名:契約

何が得られますか? .svc拡張機能を削除するにはどうすればよいですか?

+0

拡張子.svcを削除すると、IISはどのハンドラを使用するのかリクエスト? –

答えて

5

ロン・ジェイコブスは、トピックに関する素晴らしい記事を持っている - あなたが探しているものを達成するためにServiceRouteを使用する必要があります。彼は彼のフォローアップに示したよう

投稿、WCF Data Services and ServiceRoute、結果として得られるサービス文書は実際には変更内容を反映し、.svc拡張子を持たないサービスURLを表示します。

この商品にはASPが必要です。NET 4で完全に提供されているNETルーティングのサポート(必要に応じて.NET 3.5 SP1で有効にすることができます)

+0

投稿に感謝します。偉大でシンプルです。私はServiceRouteを使っているので、何が間違っているのか分かりません。 – capdragon

+1

@capdragon:あなたのコードには1つの相違があります:あなたの設定の ''セクションに '.svc'拡張のための' ServiceHostFactory'を追加しています。これはSOAPサービスを示しています( 'basicHttpBinding 'または' wsHttpBinding'かそれに似たもの)。あなたの 'global.asa.cs'では、' webHttpBinding'を使ってRESTベースのサービスに使用されるファクトリである 'WebServiceHostFactory'を登録しています...残念なことに、表示する関連設定セクションを表示していません私たちは**あなたのサービスをバインドするものが何であるか... –

+2

ありがとうマーク...それはweb.config "ServiceHostFactory"に一致するようにグローバルファイル内のファクトリを変更した後で、今はうまくいく。再度、感謝します! – capdragon

関連する問題