WCFアプリケーションには、次の属性を持つサービス契約があります。
namespace We.Work {
[ServiceContract(Namespace = "We", Name = "IWork", SessionMode = SessionMode.NotAllowed)]
public interface IWork
属性を持つサービス契約の実装:
namespace We.Work {
[ServiceBehavior(Name = "Work", Namespace = "We",
IncludeExceptionDetailInFaults = true,
InstanceContextMode = InstanceContextMode.PerCall,
ConcurrencyMode = ConcurrencyMode.Multiple,
ReleaseServiceInstanceOnTransactionComplete = false
)]
public class WorkImplementation : IWork
サービスホスト(開発用のWindowsサービスまたはコンソールアプリケーション)
namespace We.Host {
// ....
workServiceHost = new ServiceHost(typeof(We.Work.WorkImplementation));
workServiceHost.Faulted += new EventHandler(Host_Faulted);
workServiceHost.Open();
最後になりましたが、app.config:
<service behaviorConfiguration="WorkServiceBehaviour" name="We.Work.WorkImplementation">
<endpoint behaviorConfiguration="WorkEndPointBehaviour" binding="wsHttpBinding" bindingConfiguration="WorkWsHttpBindingConfig" name="WorkEndPoint" contract="We.Work.IWork"/>
<host> <baseAddresses> <add baseAddress="http://.../Work.svc"/> </baseAddresses> </host>
</service>
<behaviors>
<endpointBehaviors>
<behavior name="WorkEndPointBehaviour">
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="WorkServiceBehaviour">
<serviceDebug httpHelpPageEnabled="true" httpsHelpPageEnabled="true" includeExceptionDetailInFaults="true"/>
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
<serviceMetadata/>
<serviceThrottling maxConcurrentCalls="25" maxConcurrentSessions="25" maxConcurrentInstances="25"/>
</behavior>
</serviceBehaviors>
</behaviors>
質問:app.configと属性を混在させることは可能ですか?どの構成が優先されますか?良い習慣は何ですか?
たとえば、ServiceContract(SessionMode = SessionMode.NotAllowed)は、wsHttpBindingがセッションを使用するのを防ぎますか?
[回答:app.configの設定が実際に適用されていることを確認するにはどうすればよいですか?完全修飾名が機能します。]