Problem: 服务器对象扩展(SOE)的默认属性没有被应用

文章编号 : 39194
软件: ArcGIS Server 9.2, 9.3, 9.3.1, 10
操作系统: Windows XP, 2003Server, Vista, 2008Server, Win 7
已邀请:

EsriSupport

赞同来自:

错误信息: 在SOE启动时,服务器对象扩展(SOE)的默认属性没有应用到服务。

原因: 服务器对象扩展(SOE)可以选择性地暴露属性,以便Server管理员在基于服务启用SOE时设置。SOE属性为SOE跨相同类型的不同服务部署提供了一些灵活度。例如,你的SOE可能暴露属性以决定在地图中哪一层将用于分析。这可能随服务变化,所以它应该被暴露为属性。
SOE属性的意图是通过SOE开发者写的ArcCatalog或Manager的客户化属性页来设置。如果没有属性页被开发,或者如果服务器管理员通过“Publish a GIS resource”向导(这种方式不会显示属性页)发布服务,那么默认属性将不会基于SOE设置。这可能会引起SOE不会正确的执行功能。
SOE开发者应该优雅地处理这种情况—用于属性的值没有被发现。可以通过直接在SOE代码中设置默认值来解决。


解决方法: 如果SOE开发者为SOE创建了一个ArcCatalog或Manager的属性页,服务器管理员应该使用”Add new service” 向导来基于服务启用SOE。 “Add new service” 向导会显示属性页并且允许服务器管理员应用有效的属性值。或者,服务器管理员也可以在创建服务后打开服务属性对话框,并通过Capabilities选项卡访问SOE属性页。
如果SOE 开发者不想创建属性页,需要在SOE中通过代码处理属性未设置的情况。就像下面的例子中这样,可以在SOE构造方法中完成。在下面的例子中,叫做MarkerLimit的属性,在服务配置文件中没有属性值被发现时,将被设置默认值为500(例子是C#的):

public void Construct(IPropertySet props)
{
configProps = props;
try
{
string markerLimitString = props.GetProperty("MarkerLimit") as string;
m_markerLimit = Convert.ToInt32(markerLimitString);
}
catch
{
logger.LogMessage(ServerLogger.msgType.warning, "Construct", 8000, "SOE custom error: No value or invalid value provided for MarkerLimit. Defaulting to a limit of 500.");
m_markerLimit = 500; // Default if property can't be read
}
}


创建时间:2011-07-28
最近更新: 2011-08-11


原文链接
http://support.esrichina.com.c ... .html

要回复问题请先登录注册