【文章版权归作者和CNBLOG所有,转载请务必注明原始出处】

猫尾巴的狐狸

导航

windows azure常见问题处理及技巧[持续更新]

本贴记录windows azure 平台中遇到的常见问题以及解决方案和一些平常技巧。

因本人也是逐步在学习这个平台的东西,所以将持续更新,记录开发遇到的问题以及个人愚见的解决方案。有问题之处,欢迎指正。

本贴地址:http://www.cnblogs.com/ginohuo/archive/2010/09/15/1827062.html

【1】. Some Tips for table service.

【1.1】 修改最大连接数,如果需要。

Config file:  

<system.net>

<connectionManagement>

<add address = "*" maxconnection = "24" />

</connectionManagement>

</system.net>

代码: 

ServicePointManager.DefaultConnectionLimit = 24;

【1.2】 Turn off 100-continue

Config file:  

<system.net>

<settings>

<servicePointManager expect100Continue="false" />

</settings>

</system.net>

代码:  

ServicePointManager.Expect100Continue = false;

【1.3】 关闭Context跟踪,如果用不上的环境(比如都是查询)

context.MergeOption = MergeOption.NoTracking;

【1.4】 合理利用PartitionKey & RowKey

具体参见: More about “PartitionKey”&"RowKey” in windows azure table storagehttp://www.cnblogs.com/ginohuo/archive/2010/08/31/1813753.html

<2> using customer httphandler in windows azure webrole, 在webrole中使用自定义HttpHandler.

由于部署以后的webrole实际运行在IIS7上面,如果您配置的是:

<system.web>
      <httpHandlers>

将会报错,正确的配置是在<system.webServer>节点中。

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
    <validation validateIntegratedModeConfiguration="false"></validation>
    <handlers>
      <add path="*.do" name="KeywordsHandler" verb="GET" type="KeywordsWebRole.KeywordsHandler,KeywordsWebRole" resourceType="Unspecified" allowPathInfo="true"></add>
    </handlers>
  </system.webServer>

<3> 使用role配置文件里的storage连接信息创建client account时,使用以下代码:

CloudStorageAccount account = CloudStorageAccount.FromConfigurationSetting("DataConnectionString");

出现以下错误:

Exception: SetConfigurationSettingPublisher needs to be called before FromConfigurationSetting can be used.

解决方案:

在 public override bool OnStart()中加入以下代码:

CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSetter) =>
          {
              configSetter(RoleEnvironment.GetConfigurationSettingValue(configName));

              RoleEnvironment.Changed += (anotherSender, arg) =>
              {
                  if (arg.Changes.OfType<RoleEnvironmentConfigurationSettingChange>()
                    .Any((change) => (change.ConfigurationSettingName == configName)))
                  {
                      if (!configSetter(RoleEnvironment.GetConfigurationSettingValue(configName)))
                      {
                          RoleEnvironment.RequestRecycle();
                      }
                  }
              };
          });

【4】 关于部署

【4.1】 部署必要的dll到云端(第三方的,等等),通过IntelliTrace功能查询云端服务器已经具有的程序集。

【4.2】配置正确的Storage连接字符串。发布之时注意检查用于开发和产品环境的不同Storage连接字符串。

【4.3】注意32bit的程序集。云端是64位系统,可以加载运行32bit的程序集。

在可能的情况下,尽量使用64bit的程序集。另外一些32 Bit Native Library在云端可能会加载失败,可以通过IntelliTrace来跟踪

【4.4】不要尝试运行需要管理员权限的组件。 (比如在云端写入注册表)

【4.5】配置正确的 ASP.NET providers。如果使用了Sql azure 作ASP.NET provider的存储,需要在Sql azure数据库中坐相应的初始化处理。或者使用azure table provider,或者其他…需要注意开发环境和产品环境的配置。

【4.6】尽量使用Https的Storage连接。

posted on 2010-09-15 15:21  GinoHuo  阅读(384)  评论(1编辑  收藏  举报