尝试在Windows Azure Web服务的AppFabric Cache中存储会话状态时抛出SocketException

时间:2014-09-22 11:56:38

标签: c# asp.net caching azure

我正在尝试一个简单的示例项目,以了解如何配置Windows Azure云服务以使用Co-located缓存。

我正在使用VS2010并且已经跟随this example但是当我到达关于共同定位缓存的部分的末尾时,我无法在本地运行我的项目。

时效果很好

我得到以下例外情况:(我希望它是可读的......)

  

'/'应用程序出错。

     

请求的名称有效,但未找到所请求类型的数据

     

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

     

异常详细信息:System.Net.Sockets.SocketException:请求的名称有效,但未找到所请求类型的数据

     

来源错误:

     

在执行当前Web请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息。

     

堆栈追踪:

     

[SocketException(0x2afc):请求的名称有效,但未找到所请求类型的数据]      Microsoft.ApplicationServer.Caching.AsyncResultNoResult.EndInvoke()+ 202      Microsoft.ApplicationServer.Caching.AsyncResult`1.EndInvoke()+ 40      Microsoft.ApplicationServer.Caching.SocketConnectionFactory.EndConnect(IAsyncResult asyncResult)+75      Microsoft.ApplicationServer.Caching.TcpClientChannelFactory.TcpConnectionCallback(IAsyncResult result)+182

     

[DataCacheException:ErrorCode:SubStatus:暂时失败。请稍后重试。 (一个或多个指定的缓存服务器不可用,这可能是由繁忙的网络或服务器引起的。对于内部部署缓存集群,还要验证以下条件。确保已为此客户端帐户授予安全权限,并检查AppFabric允许缓存服务通过所有缓存主机上的防火墙。服务器上的MaxBufferSize也必须大于或等于从客户端发送的序列化对象大小。)。附加信息:客户端尝试与服务器通信:net.tcp:// SessionStateDemo:24233。      Microsoft.ApplicationServer.Caching.DataCache.ThrowException(ErrStatus errStatus,Guid trackingId,Exception responseException,Byte [] [] payload,EndpointID destination)+767      Microsoft.ApplicationServer.Caching.DataCache.ThrowException(ResponseBody respBody,EndpointID destination)+149      Microsoft.ApplicationServer.Caching.DataCacheFactory.EstablishConnection(IEnumerable 1 servers, RequestBody request, Func 3 sendMessageDelegate,DataCacheReadyRetryPolicy retryPolicy)+1313      Microsoft.ApplicationServer.Caching。<> c__DisplayClass5.b__2(RequestBody req)+198      Microsoft.ApplicationServer.Caching.SocketClientProtocol.SendReceive(IVelocityRequestPacket请求,Func 2 delegate, EndpointID& destination) +121 Microsoft.ApplicationServer.Caching.SocketClientProtocol.Initialize(IEnumerable 1台服务器)+1225      Microsoft.ApplicationServer.Caching.DataCacheFactory.GetCache(String cacheName,CreateNewCacheDelegate cacheCreationDelegate,DataCacheInitializationViaCopyDelegate initializeDelegate)+1104      Microsoft.ApplicationServer.Caching.DataCacheFactory.GetCache(String cacheName)+131      Microsoft.Web.DistributedCache.DataCacheFactoryWrapper.CreateDataCacheFromFactory(DataCacheFactory factory,String cacheName)+63      Microsoft.Web.DistributedCache.CacheHelpers.RunCacheCreationHooks(CacheConnectingEventArgs fetchingEventArgs,IDataCacheFactory dataCacheFactory,Object sender,EventHandler 1 fetchingHandler, EventHandler 1 fetchedHandler)+306      Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider.CreateInternalProvider(IHttpRuntime httpRuntime,SessionInitializationData initData,IDataCacheFactory dataCacheFactory,EventHandler 1 cacheFetching, EventHandler 1 cacheFetched)+399      Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider.GetInternalProvider()+315      Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider.CreateNewStoreData(HttpContext context,Int32 timeout)+59      System.Web.SessionState.SessionStateModule.InitStateStoreItem(Boolean addToContext)+160      System.Web.SessionState.SessionStateModule.CompleteAcquireState()+340      System.Web.SessionState.SessionStateModule.BeginAcquireState(Object source,EventArgs e,AsyncCallback cb,Object extraData)+1269      System.Web.AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+12698078      System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean& completedSynchronously)+288

谁能告诉我这里发生了什么?我该如何解决这个问题?

该教程中是否缺少我需要做的事情?

编辑:我正在使用VS2010 Professional,Windows Azure SDK 2.1。 Widnows Azure Cache包是v2.1.0。

相关的web.config部分:

<system.web>
...
<!-- Windows Azure Caching session state provider -->
    <sessionState mode="Custom" customProvider="AFCacheSessionStateProvider">
      <providers>
        <add name="AFCacheSessionStateProvider" type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache" cacheName="default" dataCacheClientName="default" applicationName="AFCacheSessionState"/>
      </providers>
    </sessionState>
...
<sytem.web>

    <dataCacheClients>
    <dataCacheClient name="default">
      <!--To use the in-role flavor of Windows Azure Caching, set identifier to be the cache cluster role name -->
      <autoDiscover isEnabled="true" identifier="SessionStateDemo" />
    </dataCacheClient>
  </dataCacheClients>

1 个答案:

答案 0 :(得分:0)

基于this thread,Windows Azure云服务看起来必须是一个正常运行的启动项目。否则,Windows Azure Runtime将不会初始化导致SocketExceptions的原因。