Мне нужно создать приложение WCF Soap без IIS, но я только начинающий.
Я могу вызвать метод "Addiere" в моем браузере, но я хочу увидеть список методов в WSDL.
Program.cs:
class Program
{
private static ServiceHost _wcfServiceHost = null;
static void Main(string[] args)
{
_wcfServiceHost = new ServiceHost(typeof(WcfTransferservice.Service1), new Uri("http://localhost:8000"));
_wcfServiceHost.AddServiceEndpoint(typeof(WcfTransferservice.IService1), new BasicHttpBinding(), "Soap");
ServiceEndpoint endpoint = _wcfServiceHost.AddServiceEndpoint(typeof(WcfTransferservice.IService1), new WebHttpBinding(), "Web");
endpoint.Behaviors.Add(new WebHttpBehavior());
try
{
_wcfServiceHost.Open();
Console.WriteLine("");
Console.WriteLine("This can also be accomplished by navigating to");
Console.WriteLine("http://localhost:8000/Web/EchoWithGet?s=Hello, world!");
Console.WriteLine("in a web browser while this sample is running.");
Console.WriteLine("");
Console.WriteLine("Press [Enter] to terminate");
Console.ReadLine();
_wcfServiceHost.Close();
}
catch (CommunicationException cex)
{
Console.WriteLine("An exception occurred: {0}", cex.Message);
_wcfServiceHost.Abort();
Console.ReadLine();
}
}
}
IService1.cs:
// HINWEIS: Mit dem Befehl "Umbenennen" im Menü "Umgestalten" können Sie den Schnittstellennamen "IService1" sowohl im Code als auch in der Konfigurationsdatei ändern.
[ServiceContract]
public interface IService1
{
[OperationContract]
[WebGet]
int Addiere(int a, int b);
[OperationContract]
[WebGet]
int Multipliziere(int a, int b);
}
Web.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5"/>
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- Legen Sie die Werte unten vor der Bereitstellung auf "false" fest, um die Veröffentlichung von Metadateninformationen zu vermeiden. -->
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<!-- Damit in Fehlern Ausnahmedetails zum Debuggen angezeigt werden, legen Sie den Wert unten auf "true" fest. Legen Sie ihn vor der Bereitstellung auf "false" fest, um die Veröffentlichung von Ausnahmeinformationen zu vermeiden. -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<protocolMapping>
<add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<!--
Um das Stammverzeichnis der Webanwendung beim Debuggen auszuwählen, legen Sie den Wert unten auf "true" fest.
Legen Sie ihn vor der Bereitstellung auf "false" fest, um die Veröffentlichung von Informationen über den Webanwendungsordner zu vermeiden.
-->
<directoryBrowse enabled="true"/>
</system.webServer>
</configuration>
Я могу назвать метод addiere следующим образом:
http://localhost:8000/Web/addiere?a=4&b=8
Но как я могу вызвать WSDL, чтобы показать все методы?