Hej! Du behöver nog lägga till en service endpoint i web.configen: OK, jag har nu lagt till EndPoint i web.config och börjat titta på Publish. Det verkar vara ganska många parametrar som skall anges: Publish method, Service URL: SIte/application, Credentials m.fl. Känner mig osäker på hur jag skall sätta dessa för att det skall bli så enkelt som möjligt och behöver råd och tips. Om du vill kika vad resultatet blir innan du gör nåt kan du köra publish till "Local file system" istället. Då får du helt sonika en uppsättning filer/mappar som du sen kan lägga på lämplig publicerad yta (typ C:\inetpub\wwwroot\minsuperapplikation\superservicen\). När jag skriver in <services> i webconfig enligt ovan, får jag felet "Unrecognized configuration section services". Vad kan ha gått fel?Hur deployar jag min Wcf-webtjänst?
Jag försöker lära mig Wcf på egen hand mha nätet pch böcker (har tidigare jobbat med asmx).
Har skapat en enkel Wcf-applikation i VS 2010 genom att välja template Wcf Service Application och inte göra någon änding i koden.
När jag kör applikationen visas WCF Test Client och när jag gör invoke på metoden GetData blir resultatet som det skall vara.
Nu vill jag deploya den här webtjänsten i IIS på en annan maskin men hittar ingen bra instruktion på hur man gör.
Jag skulle behöva en lista över vad som skall göras steg för steg. Är det någon på forumet som kan hjälpa mig med det?
Mvh Göran
Bifogar innehållet i interface-klassen IService1.cs, implementationsklassen Service1.svc.cs samt Web.config:
IService1.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
namespace HelloWcf2
{
// NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService1" in both code and config file together.
[ServiceContract]
public interface IService1
{
[OperationContract]
string GetData(int value);
[OperationContract]
CompositeType GetDataUsingDataContract(CompositeType composite);
// TODO: Add your service operations here
}
// Use a data contract as illustrated in the sample below to add composite types to service operations.
[DataContract]
public class CompositeType
{
bool boolValue = true;
string stringValue = "Hello ";
[DataMember]
public bool BoolValue
{
get { return boolValue; }
set { boolValue = value; }
}
[DataMember]
public string StringValue
{
get { return stringValue; }
set { stringValue = value; }
}
}
}
Service1.svc.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
namespace HelloWcf2
{
// NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Service1" in code, svc and config file together.
public class Service1 : IService1
{
public string GetData(int value)
{
return string.Format("You entered: {0}", value);
}
public CompositeType GetDataUsingDataContract(CompositeType composite)
{
if (composite == null)
{
throw new ArgumentNullException("composite");
}
if (composite.BoolValue)
{
composite.StringValue += "Suffix";
}
return composite;
}
}
}
Web.config
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
Sv: Hur deployar jag min Wcf-webtjänst?
<configuration>
<services>
<service name="HelloWcf2.Service1">
<endpoint address="" binding="webHttpBinding" contract="Service1"/>
</service>
</services>
</configuration>
Därefter borde det i stort sett bara vara att köra publish till lämpligt ställe i IIS och hoppas att det funkar :)
Sv: Hur deployar jag min Wcf-webtjänst?
Jag undrar också vilket det förväntade resultatet är av en lyckad Publish?
Mvh och tack på förhand för fler hjälpande svar!
GöranSv:Hur deployar jag min Wcf-webtjänst?
Motsvarande (typ) inställningar för en publish av typen "Web deploy" skulle vara
Service url: localhost
Site/application: Default Web site/minsuperapplikation/superservicen
(Ev. kan "Mark as IIS application" vara ikryssad om det inte är konfat som en app i IIS redan)
Credentials beror på målmiljön, men om du bara kör på din lokala utvmiljö så ska du inte behöva ange nåt särskilt.
Det förväntade resultatet i bägge fallen är att du kan surfa in på t.ex. http://localhost/minsuperapplikation/superservicen/service.svc och inte få nån felkod.Sv:Hur deployar jag min Wcf-webtjänst?