Hvis der i klient programmet ønskes en session pr. Proxy skal man desuden sætte user name og password selv om der ikke kræves login for at bruge servicen. SessionCounterWcfServiceClient serviceProxy = new SessionCounterWcfServiceClient(); serviceProxy.ClientCredentials.UserName.UserName = ""; serviceProxy.ClientCredentials.UserName.Password = ""; int c = serviceProxy.Count(); Session skal tillades på klienten for basicHttpBinding (soap 1.1)"> Hvis der i klient programmet ønskes en session pr. Proxy skal man desuden sætte user name og password selv om der ikke kræves login for at bruge servicen. SessionCounterWcfServiceClient serviceProxy = new SessionCounterWcfServiceClient(); serviceProxy.ClientCredentials.UserName.UserName = ""; serviceProxy.ClientCredentials.UserName.Password = ""; int c = serviceProxy.Count(); Session skal tillades på klienten for basicHttpBinding (soap 1.1)">

Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Session Når man hoster en WCF Service på ASP.NET website, kan man bruge ASP.NET’s Session.

Lignende præsentationer


Præsentationer af emnet: "Session Når man hoster en WCF Service på ASP.NET website, kan man bruge ASP.NET’s Session."— Præsentationens transcript:

1 Session Når man hoster en WCF Service på ASP.NET website, kan man bruge ASP.NET’s Session

2 using ……….; ………………………….. using System.Web; using System.ServiceModel.Activation; namespace WebApplication { [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] public class CountService : ICountService { private int count = 0; public int Count() { if(HttpContext.Current.Session["count"] != null) count = (int) HttpContext.Current.Session["count"]; ++count; HttpContext.Current.Session["count"] = count; return count; } ………………………………… Der skal herudover tilføjes aspNetCompatibilityEnabled="true" til serviceHostingEnvironment elementet i web.Config Uddrag af web.Config ……… ………. Implementering af tilgang til ASP.NET session mm for WcfService Man kan på HttpContext.Current også her få tilgang til ASP.NET’s Application objekt (singleton)

3 Session skal tillades på klienten der anvender en wcfService (.svc), en asp.net webservice (.asmx) eller remoting Bemærk at man her kun får én session for klient-applicationen, hvis man ønsker én pr. service (proxy) klasse skal man anvende endpoint og wsHttpBinding for wcf-service – se mere avanceret senere Uddrag af Config filene på windows- / consoleklient (normalt via app.config) <binding name="BasicHttpBinding_I CountService" allowCookies="true" …………… /> Hvis der i klient programmet ønskes en session pr. Proxy skal man desuden sætte user name og password selv om der ikke kræves login for at bruge servicen. SessionCounterWcfServiceClient serviceProxy = new SessionCounterWcfServiceClient(); serviceProxy.ClientCredentials.UserName.UserName = ""; serviceProxy.ClientCredentials.UserName.Password = "";........ int c = serviceProxy.Count(); Session skal tillades på klienten for basicHttpBinding (soap 1.1)

4 Mere om Session Det næste om session kan man springe over hvis man hoster WCF service på ASP.NET website og vil nøjes med den enkle løsning

5 Hvis der skal anvendes session på servicen under en WcfServiceApplication (kan ikke bruges på ASP.NET – website under ISS) skal ServiceContract’en tilføjes parametre og den ser således ud: [ServiceContract(SessionMode = SessionMode.Required)] using System.ServiceModel.Web;// indeholder ServiceContract og OperationContract klasserne ……….. namespace MyNamespace { [ServiceContract(SessionMode = SessionMode.Required)] [ServiceContract]// Attribut på interfacet public interface IService1 { [OperationContract]// Attribut på metoder der skal kunne tilgås via servicen (proxyen) string GetData(int value); Interface med kontrakten

6 Hvis man vil anvende session i selve serviceklasserne med [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)] kan man definere det som i web.config. Dette gøres ved at definere sit service endpoint (angives også i.svc filen) og er endpoint Soap12, sætte kontrakten og binding til wsHttpBinding Denne løsning gælder også hvis én session pr. proxy klasse på klient selv om man bruger ASP.NET Sessions Uddrag af Web.Config for at bruge Session i en WcfServiceApplication …… <endpoint address="Soap12" contract="WcfService1.IService1" binding="wsHttpBinding"/> …… ASP.NET WcfServiceApplication med session <= Her Defineres selve klassen, der implementere kontrakten <= Her Defineres kontrakten (normal interfacet)

7 Hvis man vil anvende login for at bruge sin service med session fra flere proxy i samme application skal der desuden defineres at man ikke ønsker at der opsættes sikkerhed for servicen definere det vor wsHttpBinding (Sikkerhed udelades i denne runde) Uddrag af Web.Config for at bruge Session i en WcfServiceApplication …… …… ASP.NET WcfServiceApplication med session

8 WcfServiceApplication med session på serviceobject kræver at man får lavet en wsHttpBinding. Dette kan gøres med en tilføjelse til Web.Config. Denne løsning gælder ikke for WebAppication (ASP.NET) der kører på IIS På ISS kan man heller ikke selv sætte en protokol, den er givet http Uddrag af Web.Config for at bruge Session i en WcfServiceApplication …… <add scheme="http" binding="wsHttpBinding" /> …… WcfServiceApplication med session


Download ppt "Session Når man hoster en WCF Service på ASP.NET website, kan man bruge ASP.NET’s Session."

Lignende præsentationer


Annoncer fra Google