Bagaimana cara menyimpan status sesi asp.net di SQL Server untuk aplikasi Asp.Net MVC 4 atau aplikasi WebRole?

Bagaimana cara menyimpan status sesi di SQL Server untuk Asp.net mvc4 atau aplikasi Peran Web Windows Azure?

Edit

Mengapa saya mendapatkan kesalahan ini?

Kesalahan HTTP 500.23 - Kesalahan Server Internal
Setelan ASP.NET telah terdeteksi yang tidak berlaku dalam mode pipa terkelola terintegrasi.

web.config saya terlihat seperti ini:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <section name="webAssets" type="Telerik.Web.Mvc.Configuration.WebAssetConfigurationSection, Telerik.Web.Mvc" requirePermission="false" />
      <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
      <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </sectionGroup>
  </configSections>
  <!--
    <connectionStrings>
        <add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=aspnet2012620142020;Integrated Security=True" providerName="System.Data.SqlClient"/>
    </connectionStrings>
  -->
  <connectionStrings>
    <!--<add name="HotDeployDbContext" connectionString="data source=JOE-WANG\WQ;initial catalog=HotDeploy;user id=sa;password=wq187731" providerName="System.Data.SqlClient"/>-->
    <!--<add name="HotDeployDbContext" connectionString="data source=tcp:z1782cwqws.database.windows.net,1433;initial catalog=HotDeployDB4CloudService;user id=hotdeployadmin@z1782cwqws;password=accela.123;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;" providerName="System.Data.SqlClient" />-->
    <add name="HotDeployDbContext" connectionString="data source=tcp:xxxxxxxx.database.windows.net,1433;initial catalog=xxxxx;user idxxxxx@xxxx;password=dddd.123;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;" providerName="System.Data.SqlClient"/>
  </connectionStrings>
  <appSettings>
    <add key="webpages:Version" value="2.0.0.0" />
    <add key="webpages:Enabled" value="true" />
    <add key="PreserveLoginUrl" value="true" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />

  </appSettings>
  <system.web>
    <customErrors mode="Off" />
    <httpRuntime executionTimeout="14400" maxRequestLength="716800" />
    <compilation targetFramework="4.0" />
    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login" timeout="2880" />
    </authentication>
    <pages>
      <namespaces>
        <add namespace="System.Web.Helpers" />
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
        <add namespace="System.Web.WebPages" />
        <add namespace="Telerik.Web.Mvc.UI" />
      </namespaces>
    </pages>
    <profile defaultProvider="DefaultProfileProvider">
      <providers>
        <add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
      </providers>
    </profile>
    <membership defaultProvider="DefaultMembershipProvider">
      <providers>
        <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
      </providers>
    </membership>
    <roleManager defaultProvider="DefaultRoleProvider">
      <providers>
        <add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
      </providers>
    </roleManager>
    <!--
    <sessionState mode="InProc" timeout="30" customProvider="DefaultSessionProvider">
      <providers>
        <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
      </providers>
    </sessionState>
    <httpHandlers>
      <add verb="GET,HEAD" path="asset.axd" validate="false" type="Telerik.Web.Mvc.WebAssetHttpHandler, Telerik.Web.Mvc" />
    </httpHandlers>-->
    <!--before I added sessionState element . everything is fine.-->
    <sessionState mode="SQLServer" cookieless="true" 
    sqlConnectionString="data source=10.50.70.81; userid=sa; password=wq187731"
    timeout="300" 
    sqlCommandTimeout="10" />
  </system.web>
</configuration>
  </system.web>
  <system.webServer>
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="3000000000" />
      </requestFiltering>
    </security>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" />
    <directoryBrowse enabled="true" />
    <handlers>
      <remove name="asset" />
      <add name="asset" preCondition="integratedMode" verb="GET,HEAD" path="asset.axd" type="Telerik.Web.Mvc.WebAssetHttpHandler, Telerik.Web.Mvc" />
    </handlers>
  </system.webServer>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.WindowsAzure.StorageClient" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-1.7.0.0" newVersion="1.7.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

</configuration>

Jika saya mengubah kumpulan aplikasi ke mode klasik. Saya mendapat halaman kesalahan IIS di bawah ..

Kesalahan HTTP 403.14 - Terlarang
Server Web dikonfigurasi untuk tidak mencantumkan isi direktori ini.


person Joe.wang    schedule 19.10.2012    source sumber
comment
...mungkin bukan ide terbaik untuk memberikan IP server database Anda dan kata sandinya. :/ Ya, saya menyadari bahwa IP berada dalam rentang alamat pribadi, tapi itu tetap bukan ide yang bagus.   -  person J0e3gan    schedule 14.02.2014
comment
:) ada masalah keamanan yang aman? Saya tidak dapat membayangkannya.   -  person Joe.wang    schedule 14.02.2014


Jawaban (1)


Penyedia status sesi dikonfigurasikan di web.config Anda menggunakan sessionState elemen. Untuk server SQL Anda mengatur mode ke SQLServer dan mengkonfigurasi string koneksi. Untuk Azure, Anda dapat melihat jawaban berikut yang mencakup opsi berbeda.

person Darin Dimitrov    schedule 19.10.2012
comment
Jawaban yang sangat membantu. silakan lihat postingan saya. Saya mengedit lagi. terima kasih - person Joe.wang; 19.10.2012
comment
Saya melihat Anda menggunakan bagian <httpHandlers> untuk mendaftarkan beberapa penangan asset.axd khusus. Namun jika Anda menjalankan mode Pipa Terintegrasi, Anda harus menggunakan bagian system.webServer/handlers untuk mendaftarkan penangan khusus, dan bukan system.web/httpHandlers. - person Darin Dimitrov; 19.10.2012
comment
Saya telah menghapus elemen system.web/httpHandlers di web.config. tapi saya mendapat kesalahan yang sama. membantu. - person Joe.wang; 19.10.2012
comment
Silakan tunjukkan web.config lengkap Anda seperti sekarang. Juga tidakkah Anda mendapatkan detail lebih lanjut tentang pengecualian dan bagian mana yang tidak dapat digunakan? Silakan posting jejak tumpukan pengecualian lengkap Anda. Lihat juga server EventLog. Ini mungkin berisi lebih banyak informasi tentang kesalahan tersebut. - person Darin Dimitrov; 19.10.2012
comment
Silakan tinjau web.config lengkap. BTW, tidak terkecuali halaman kesalahan IIS. Anda tahu, Itu terjadi sebelum aplikasi web dijalankan. terima kasih - person Joe.wang; 19.10.2012
comment
Saya yakin saya telah membersihkan log sebelum saya menemukan kesalahan ini. Saya tidak melihat eventlog baru dibuat. - person Joe.wang; 19.10.2012
comment
Apakah aplikasi Anda berfungsi jika Anda mengomentari node sessionState? - person Darin Dimitrov; 19.10.2012