session n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Session PowerPoint Presentation
Download Presentation
Session

Loading in 2 Seconds...

play fullscreen
1 / 8

Session - PowerPoint PPT Presentation


  • 81 Views
  • Uploaded on

Session. Når man hoster en WCF Service på ASP.NET website, kan man bruge ASP.NET’s Session. Implementering af tilgang til ASP.NET session mm for WcfService. using ……….; ………………………….. using System.Web; using System.ServiceModel.Activation; namespace WebApplication {

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Session' - drake-garner


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
session

Session

Når man hoster en WCF Service på ASP.NET website,

kan man bruge ASP.NET’s

Session

implementering af tilgang til asp net session mm for wcfservice
Implementering af tilgang til ASP.NET session mm for WcfService

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

<system.serviceModel>

………

<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" />

……….

</system.serviceModel>

Man kan på HttpContext.Current også her få tilgang til ASP.NET’s Application objekt (singleton)

session skal tillades p klienten for basichttpbinding soap 1 1
Session skal tillades på klientenfor basicHttpBinding (soap 1.1)

Session skal tillades på klienten der anvender en wcfService (.svc), en asp.net webservice (.asmx) eller remotingBemæ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();

mere om session

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

interface med kontrakten
Interface med kontrakten

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)]

usingSystem.ServiceModel.Web; // indeholder ServiceContract og OperationContract klasserne

………..

namespaceMyNamespace

{

[ServiceContract(SessionMode = SessionMode.Required)]

[ServiceContract] // Attribut på interfacet

public interface IService1

{

[OperationContract] // Attribut på metoder der skal kunne tilgås via servicen (proxyen)

stringGetData(intvalue);

asp net wcfserviceapplication med session
ASP.NET WcfServiceApplication med session

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 wsHttpBindingDenne 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

<system.serviceModel>

……

<services>

<service name="WcfService1.Service1" >

<endpoint address="Soap12"

contract="WcfService1.IService1"

binding="wsHttpBinding"/>

</service>

</services>

<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" />

……

</system.serviceModel>

<= Her Defineres selve klassen,

der implementere kontrakten

<= Her Defineres kontrakten

(normal interfacet)

asp net wcfserviceapplication med session1
ASP.NET WcfServiceApplication med session

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

<system.serviceModel>

……

<bindings>

<wsHttpBinding>

<binding name="">

<security mode="None">

<message establishSecurityContext="false" />

</security>

<reliableSession enabled="true"/>

</binding>

</wsHttpBinding>

</bindings>

……

</system.serviceModel>

wcfserviceapplication med session
WcfServiceApplication med session

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

<system.serviceModel>

……

<protocolMapping>

<add

scheme="http"

binding="wsHttpBinding"

/>

</protocolMapping>

……

</system.serviceModel>