2010-11-24 13 views
6

私のWCFサービスは、httpsとhttpエンドポイントを公開しています。 SSLとは別に、それらは同一です。それらは同じコードにマップされます。IISでホストされているときにコードからWCFサービスを設定するにはどうすればよいですか?

外部ユーザーがhttpを使用して内部ユーザーがhttpを使用して接続することを究極の目的としています。

これは私の問題です。 VSにパッケージ化された開発用WebサーバーのCassiniはSSLを嫌う。

私はコードからサービスを設定できるのだろうかと思っています。そのため、Cassiniで実行しているときはhttpsを設定しません。

IISがホストされている場合、コードからサービスをどのように設定するのですか?私は、設定のhttps部分について不平を言っていないようにカッシーニを説得する方法についての代替的な答えに非常に満足しています。

答えて

3

IISでホストしている場合、IISの領域に多くの注意を払っています。この場合、実際にサービスを保持することはできません。

IISは、* .svcファイルに基づいて必要なファイルをServiceHostにスピンアップします。実際には、これについて多くのことを行うことはできません。

私のソリューションは異なるだろう - あなたの設定ファイル(web.config)で<service>タグを外部のみ:HTTPエンドポイントを公開し、あなたのdevの環境では

<system.serviceModel> 
    <services>  
    <service configSource="service.dev.config" /> 
    </services> 
</system.serviceModel> 

- ので、あなたのservice.dev.configはこのようになります。

<service name="....."> 
    <endpoint name="default" 
       address="....." 
       binding="basicHttpBinding" bindingConfiguration="insecure" 
       contract="......" /> 
</service> 

その後、両方のエンドポイントを含む第2 service.prod.configを作成する - HTTPとHTTPS:

<service name="....."> 
    <endpoint name="default" 
       address="....." 
       binding="basicHttpBinding" bindingConfiguration="insecure" 
       contract="......" /> 
    <endpoint name="secure" 
       address="....." 
       binding="basicHttpBinding" bindingConfiguration="secure" 
       contract="......" /> 
</service> 

と、デプロイメントサーバーのweb.configを参照してください。

+1

これは私が達成できる最高の気分でした。ありがとう。 – RichardHowells

+0

私はいくつかのサービスを持っているので、最終的にはセクション全体を外部化しました。 web.configのXML IntelliSenseは、サービスタグでconfigSourceを使用できないと言われています。私はインテリセンスを無視し、それは動作します。 – RichardHowells

+0

@RichardHowells:はい、Visual Studioインテリセンスは、これについて知的なものではありませんが、あなたが見たように動作します:-) –

9

"IISは、あなたの* .svcファイルに基づいて必要なServiceHostをスピンアップすることになります。

あまりにも真実に近い。サービスのSVCファイルには、Factoryという名前の属性があります。ここでは、クラスとそのクラスがある場所のasseblyを指定できます。このクラスは、Webのあなた自身の子孫かもしれ| DataServiceHostFactory は、だからあなたのSVCのマークアップがこの

<%@ ServiceHost 
Language="C#" 
Debug="true" 
Service="name.space.myService" 
CodeBehind="name.space.myService.svc.sc" 
Factory = "name.space.WebServiceHostFactoryEx, assembly.name" 
%> 

ようになりWebServiceHostFactoryは、すべてのサービスのヒットのために作成され、ホストあなたがそれを望むように再作成されます。

また、WebServiceHostを継承し、必要なエンドポイン、ビヘイビア、アドレスなどの設定を必要に応じて作成する必要があります。

here

ミケーレブスタマンテから非常に素晴らしいポストは、私はIISでこれを使用していますがありますが、同じように初期化されたサービスのカップルのための的環境を開催しました。

関連する問題