2017-04-21 12 views
0

こんにちは、最初の質問はここにあるので、何かが合わない場合は教えてください。Web API ASP .NET/Angular2がAzureセッションでホストされていません

このWeb APIをC#とAngular2で開発します。 機能の1つに効率的なセッションが必要です。私は数日間、これに取り掛かっている多数のトピックと記事を調べました。

if (HttpContext.Current.Session != null) HttpContext.Current.Session["Object"] = myNotNullVariable; 

サーバー側は、CORSが(*どこでもフロントとCORSエラーとなるジョーカーを使用して)E​​nableCors属性で有効になっている :

[EnableCors(origins: "http://localhost:4200,http://mywebapifronturl,http://mywebapibackurl",headers: "accept,content-type,origin,expires,cookie,authorization",methods: "*",exposedHeaders: "set-cookie",SupportsCredentials = true)] 
[RoutePrefix("api/project")] 
public class ProjectController : ApiController 

私は何気なく、このようなセッションで、私のオブジェを保存します

myGetFunctionWhichNeedsSession(): Observable<Array<ModelModel>>{ return this.http.get(environment.baseUrl + '/api/myController/myGetFunctionWhichNeedsSession/') .map(res => res.json()); }

:ここ

は、フロントエンド要求であります3210以下

は私WebApiConfigです:

public static string UrlPrefix { get { return "api"; } } 
    public static string UrlPrefixRelative { get { return "~/api"; } } 

    public static void Register(HttpConfiguration config) 
    { 
     // Configuration et services API Web 

     // Itinéraires de l'API Web 
     config.MapHttpAttributeRoutes(); 
     config.EnableCors(); 
     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 
    } 

その後、私のGlobal.asaxの作品:

protected void Application_PostAuthorizeRequest() 
    { 
     if (IsWebApiRequest()) 
     { 
      HttpContext.Current.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.Required); 
     } 
    } 

    private bool IsWebApiRequest() 
    { 
     return HttpContext.Current.Request.AppRelativeCurrentExecutionFilePath.StartsWith(WebApiConfig.UrlPrefixRelative); 
    } 

    void Session_Start(object sender, EventArgs e) 
    { 
     // Code that runs when a new session is started 
     Session.Timeout = 10080; 
    } 

結局私のWeb.configファイル:

<system.web> 
    <sessionState mode="InProc" timeout="10080" /> 
    <compilation debug="true" targetFramework="4.5.2" /> 
    <httpRuntime targetFramework="4.5.2" /> 
    <httpModules> 
     <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" /> 
    </httpModules> 
</system.web> 

私は唯一のバックエンドAPIをテストする場合RestletClientでは問題ありませんが、私がFrontend Angleセッションで試してみると動作しません。

答えて

0

[OK]を私はここに理由を聞かせてそれを聞かせてください。 問題の原因は、Angularでは、 "withcredential"パラメータがBackEndに送信されなかったことです。

関連する問題