ホストされたエンドポイントを設定する最も基本的な例を取り上げました... http://msdn.microsoft.com/en-us/library/ms731758.aspx ...そしてこれからサービスを構成したいと思いますたとえばIIS内で行う方法で...アプリケーションの構成ファイルを使用します。
これは、このシナリオのデフォルトではないようです。
何か案は?
編集:
上記のリンクのように私はこのようなものを持っています...
// Create the ServiceHost.
using (ServiceHost host = new ServiceHost(typeof(HelloWorldService), baseAddress))
{
// Enable metadata publishing.
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
host.Description.Behaviors.Add(smb);
// Open the ServiceHost to start listening for messages. Since
// no endpoints are explicitly configured, the runtime will create
// one endpoint per base address for each service contract implemented
// by the service.
host.Open();
Console.WriteLine("The service is ready at {0}", baseAddress);
Console.WriteLine("Press <Enter> to stop the service.");
Console.ReadLine();
// Close the ServiceHost.
host.Close();
}
ここで、configを使用して「baseAddress」とsmbオブジェクト情報を割り当てたいと思います。たとえば、http://msdn.microsoft.com/en-us/library/ms733932.aspx ..で定義されています。
<system.ServiceModel>
<services>
<!—- Define the service endpoints. This section is optional in the new
default configuration model in .NET Framework 4. -->
<service>
<endpoint/>
</service>
</services>
<bindings>
<!-- Specify one or more of the system-provided binding elements,
for example, <basicHttpBinding> -->
<!-- Alternatively, <customBinding> elements. -->
<binding>
<!-- For example, a <BasicHttpBinding> element. -->
</binding>
</bindings>
<behaviors>
<!-- One or more of the system-provided or custom behavior elements. -->
<behavior>
<!-- For example, a <throttling> element. -->
</behavior>
</behaviors>
</system.ServiceModel>
私の問題は、ブラウザを使用して設定されたベースアドレスを参照すると、エンドポイントが期待どおりに表示されないことです。
エラーは発生せず、アクティブなエンドポイントがアップしているように動作します...しかし、どこにありますか?
編集2:追加情報:私が使用しているコードは上記のとおりです、私の設定ファイルは次のようになります...
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
<section name="TaskServiceConfiguration" type="emedia.nemo.Configuration.XmlSerializerSectionHandler, emedia.nemo"/>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
<TaskServiceConfiguration type="Emedia.TaskScheduler.Service.TaskServiceConfiguration, Emedia.TaskScheduler.Service, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
<PollInterval>5</PollInterval>
<ServiceURL>http://localhost:10000/TaskSchedulerService.svc</ServiceURL>
</TaskServiceConfiguration>
<log4net>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="log-file.txt"/>
<appendToFile value="true"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level %logger - %message%newline"/>
</layout>
</appender>
<appender name="DebugFileAppender" type="log4net.Appender.FileAppender">
<file value="log-file.txt"/>
<appendToFile value="true"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level %logger - %message%newline"/>
</layout>
</appender>
<appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
<mapping>
<level value="ERROR"/>
<foreColor value="Red"/>
</mapping>
<mapping>
<level value="DEBUG"/>
<foreColor value="Yellow"/>
</mapping>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5level- %message%newline"/>
</layout>
</appender>
<root>
<level value="DEBUG"/>
<appender-ref ref="FileAppender"/>
<appender-ref ref="ColoredConsoleAppender"/>
</root>
</log4net>
<system.diagnostics>
<sources>
<source name="System.ServiceModel.MessageLogging" switchValue="Warning, ActivityTracing">
<listeners>
<add name="Default" type="System.Diagnostics.DefaultTraceListener" />
<add name="ServiceModelMessageLoggingListener" />
</listeners>
</source>
<source name="System.ServiceModel" propagateActivity="true" switchValue="Warning, ActivityTracing">
<listeners>
<add name="Default" type="System.Diagnostics.DefaultTraceListener" />
<add name="ServiceModelTraceListener" />
</listeners>
</source>
</sources>
<sharedListeners>
<add name="ServiceModelMessageLoggingListener"
initializeData="Web_messages.svclog"
traceOutputOptions="Timestamp"
type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
/>
<add name="ServiceModelTraceListener"
initializeData="Web_tracelog.svclog"
traceOutputOptions="Timestamp"
type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
/>
</sharedListeners>
</system.diagnostics>
<system.serviceModel>
<!-- Server side stuff -->
<services>
<service behaviorConfiguration="wsHttpBehaviour"
name="Emedia.Messaging.Services.TaskSchedulerService">
<endpoint address="http://localhost:10000/TaskSchedulerService.svc"
binding="wsHttpBinding"
bindingConfiguration="wsHttpBinding"
contract="Emedia.Messaging.Services.ITaskServiceContract"
/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="wsHttpBehaviour">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>
<!-- Client side stuff -->
<bindings>
<wsHttpBinding>
<binding name="wsHttpBinding"
closeTimeout="00:01:00"
openTimeout="00:01:00"
receiveTimeout="00:10:00"
sendTimeout="00:01:00"
bypassProxyOnLocal="false"
transactionFlow="false"
hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="524288"
maxReceivedMessageSize="65536"
messageEncoding="Text"
textEncoding="utf-8"
useDefaultWebProxy="true"
allowCookies="false">
<readerQuotas maxDepth="32"
maxStringContentLength="8192"
maxArrayLength="16384"
maxBytesPerRead="4096"
maxNameTableCharCount="16384"
/>
<reliableSession ordered="true"
inactivityTimeout="00:10:00"
enabled="false"
/>
<security mode="Message">
<transport clientCredentialType="Windows"
proxyCredentialType="None"
realm=""
/>
<message clientCredentialType="Windows"
negotiateServiceCredential="true"
algorithmSuite="Default"
/>
</security>
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:10000/TaskSchedulerService.svc"
binding="wsHttpBinding"
bindingConfiguration="wsHttpBinding"
contract="WCFTask.ITaskServiceContract"
name="wsHttpBinding">
</endpoint>
</client>
</system.serviceModel>
</configuration>
編集:スコープの詳細:
wcfエンドポイントはWebプロジェクトで定義されています。Webプロジェクトは、そのインスタンスをホストするWindowsサービスによって参照されます。次に、テストするためにWindowsサービスのインスタンスを参照および作成するコンソールアプリがあります。
私の質問は、そのコンソールアプリにWindowsサービスを起動させ、次にWCFエンドポイントを取得して、ソリューションのエンドツーエンドのテストを実行するためにエンドポイントで呼び出しを行えるようにすることです。