我有一个大问题
我使用此配置获得了自托管服务。
<bindings>
<basicHttpBinding>
<binding name="NewBinding0" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" />
</basicHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="ReportServiceBehavior" name="ConsoleApplication1.ReportService">
<endpoint address="ReportService" binding="basicHttpBinding" bindingConfiguration="NewBinding0" contract="ConsoleApplication1.IParameterService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="ReportService/resources" behaviorConfiguration="WebBehavior" binding="webHttpBinding" contract="Telerik.Reporting.Service.IResourceService" />
<endpoint address="" behaviorConfiguration="WebBehavior" binding="webHttpBinding" contract="Telerik.Reporting.Service.IClientAccessPolicy" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:54321" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ReportServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="WebBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
</behaviors>
它有效!
但是我需要通过代码进行配置,所以我从app.config中删除了配置并试图像这样启动服务
host = new System.ServiceModel.ServiceHost(typeof(ReportService), new System.Uri("http://localhost:54321"));
BasicHttpBinding binding = new BasicHttpBinding() { MaxBufferPoolSize = int.MaxValue, MaxBufferSize = int.MaxValue, MaxReceivedMessageSize = int.MaxValue };
var g = host.AddServiceEndpoint(typeof(IParameterService), binding, "ReportService" /*Url here can either be empty or the same one as serviceUri*/);
EndpointAddress myEndpointAdd = new EndpointAddress(new System.Uri("http://localhost:54321/ReportService"),
EndpointIdentity.CreateDnsIdentity("localhost"));
g.Address = myEndpointAdd;
var d1 = host.AddServiceEndpoint(typeof(Telerik.Reporting.Service.IResourceService), new WebHttpBinding(), "ReportService/resources" /*Url here can either be empty or the same one as serviceUri*/);
var d2 = host.AddServiceEndpoint(typeof(Telerik.Reporting.Service.IClientAccessPolicy), new WebHttpBinding(), "" /*Url here can either be empty or the same one as serviceUri*/);
d1.Behaviors.Add(new WebHttpBehavior());
d2.Behaviors.Add(new WebHttpBehavior());
host.Description.Behaviors.Add(new ServiceMetadataBehavior() { HttpGetEnabled = true });
ServiceMetadataBehavior smb = host.Description.Behaviors.Find<ServiceMetadataBehavior>();
if (smb == null)
smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
host.open
我做错了什么?
答案 0 :(得分:0)
错误讯息是什么?服务根本没有运行?
我认为你缺少Console.ReadKey(); - 需要保留host.open