我使用.net 3.5开发了一个应用程序,并将它作为.exe部署在具有相同环境的许多机器上.但是,在一台特定的机器上,我收到以下错误.堆栈跟踪:
有关调用实时(JIT)调试而不是此对话框的详细信息,请参阅此消息的结尾.
System.InvalidOperationException: Unable to generate a temporary class (result=1).
error CS2001: Source file 'C:\WINDOWS\TEMP\wz58eig4.0.cs' could not be found
error CS2008: No inputs specified
at System.Xml.Serialization.Compiler.Compile(Assembly parent, String ns, XmlSerializerCompilerParameters xmlParameters, Evidence evidence)
at System.Xml.Serialization.TempAssembly.GenerateAssembly(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, Evidence evidence, XmlSerializerCompilerParameters parameters, Assembly assembly, Hashtable assemblies)
at System.Xml.Serialization.TempAssembly..ctor(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, String location, Evidence evidence)
at System.Xml.Serialization.XmlSerializer.GetSerializersFromCache(XmlMapping[] mappings, Type type)
at System.Xml.Serialization.XmlSerializer.FromMappings(XmlMapping[] mappings, Type type)
at System.Web.Services.Protocols.SoapClientType..ctor(Type type)
at System.Web.Services.Protocols.SoapHttpClientProtocol..ctor()
at SSOClient..ctor()
at sc.tradesvc.SSOManager..ctor()
at …
Run Code Online (Sandbox Code Playgroud) 我有一个配置单元查询:
insert override directory /x
select ...
Run Code Online (Sandbox Code Playgroud)
然后我尝试用sqoop导出数据
sqoop export --connect jdbc:mysql://mysqlm/site --username site --password site --table x_data --export-dir /x --input-fields-terminated-by 0x01 --lines-terminated-by '\n'
Run Code Online (Sandbox Code Playgroud)
但这似乎无法根据分隔符解析字段我错过了什么?我认为--input-fields-terminated-by 0x01部分不能按预期工作?
我不想在包含查询结果的配置单元中创建其他表.
堆栈跟踪:
2013-09-24 05:39:21,705 ERROR org.apache.sqoop.mapreduce.TextExportMapper: Exception:
java.lang.NumberFormatException: For input string: "9-2"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:458)
...
Run Code Online (Sandbox Code Playgroud)
输出的vi视图
16-09-2013 23^A1182^A-1^APub_X^A21782^AIT^A1^A0^A0^A0^A0^A0.0^A0.0^A0.0
16-09-2013 23^A1182^A6975^ASoMo Audience Corp^A2336143^AUS^A1^A1^A0^A0^A0^A0.2^A0.0^A0.0
16-09-2013 23^A1183^A-1^APub_UK, Inc.^A1564001^AGB^A1^A0^A0^A0^A0^A0.0^A0.0^A0.0
17-09-2013 00^A1120^A-1^APub_US^A911^A--^A181^A0^A0^A0^A0^A0.0^A0.0^A0.0
Run Code Online (Sandbox Code Playgroud) 我想知道我是否遗漏了什么.这是我将如何做到的:对于SPFolder,我会更改关联项目的权限(SPFolder.Item).所以我认为管理SPFolder权限归结为管理SPListItem权限.对于SPListItem,我将破坏角色继承,SPListItem.BreakRoleInheritance()
然后使用RoleAssignments
集合添加和删除角色.
我想知道RoleAssignments是否是管理SPListItem权限(除了继承)的唯一方法,并且有一种方法可以管理没有角色的个人权限.还有EffectiveBasePermissions属性,但我不确定.
所以问题是除了RoleAssignments集合之外还有其他方法(除了继承)来管理SPListItem权限吗?
@Edit:还有AllRolesForCurrentUser,但我想你可以从RoleAssignments属性获得相同的信息,所以这个只是为了方便.
@Edit:正如Flo在回答中指出的那样,设置存在问题
folder.ParentWeb.AllowUnsafeUpdates = true;
Run Code Online (Sandbox Code Playgroud)
并使用BreakRoleInheritance
带有'false'的参数(即没有复制父对象的权限).
folder.Item.BreakRoleInheritance(false);
Run Code Online (Sandbox Code Playgroud)
BreakRoleInheritance
在允许不安全的更新之后,您将无法按照GET请求进行操作.据推测,该方法重置AllowUnsafeUpdates
为"假".
我知道的一个解决方法是在BreakRoleInheritance(true)之后手动删除继承的权限,如下所示:
folder.Item.BreakRoleInheritance(false);
while(folder.Item.RoleAssignments.Count > 0) {
folder.Item.RoleAssignments.Remove(0);
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
如何判断SharePoint类是否特定于WSS或MOSS?
例如,我可以仅在MOSS中使用SPAudit类吗?
我最近要求某人收到SharePoint网站内任何更改的每日摘要提醒; 每个站点都有一个负责其网站内容的所有者.
我们目前的工作方式是自动为站点内的每个列表/库设置警报.
// Get the Lists on this Site
SPListCollection siteLists = currentSite.Lists;
foreach (SPList list in siteLists)
{
if (!list.ToString().Equals("Master Page Gallery"))
{
if (list.ReadSecurity == 1) // user has read access to all items
{
// Create an Alert for this List
Guid alertID = currentUser.Alerts.Add(list, SPEventType.All, SPAlertFrequency.Daily);
// Set any additional properties
SPAlert newAlert = currentUser.Alerts[alertID];
}
}
}
Run Code Online (Sandbox Code Playgroud)
这会产生两个问题:
问:如何为站点中的所有更改创建每日摘要警报?
在阅读Stefan Gossner关于处理对象的帖子以及关于Cross方法处理模式的这个问题之后,我发现我犯了意外重新打开一些SPWebs的罪行.我知道在Stefan Gossner的帖子中他提到你应该在完成任何子对象之后处理SPWeb.但是,microsoft文档提到了缓存SPListItemCollection对象.以下代码是否正确?返回的SPListItemCollection会重新打开SPWeb对象吗?有什么方法可以肯定吗?
// is this correct????
private SPListItemCollection GetListItems()
{
SPListItemCollection items = null;
try
{
using (SPSite site = new SPSite(GetListSiteUrl()))
{
using (SPWeb web = site.OpenWeb())
{
// retrieve the list
SPList list = web.Lists[_ListName];
// more code to create the query...
items = list.GetItems(query);
}
}
}
catch (Exception e)
{
// log error
}
return items;
}
Run Code Online (Sandbox Code Playgroud)
编辑09/09/09
我主要指的是Stefan Grossner的这篇文章:
在最后一次访问此对象的子对象后,应该释放SPWeb或SPSite对象.
我相信他所说的是,如果我在处理过去的SPWeb之后使用SPListItemCollection ...... …
好的,这可能是一个愚蠢的问题,但我似乎无法弄明白.我以为我会针对DataTable尝试LINQ.我的查询工作正常,现在我正在尝试实现一些简单的分页.
DataTable dataTable = null;
dataTable = GetAllDataTables();
var query = from r in dataTable.AsEnumerable()
orderby r.Field<string>(Constants.fileName)
select r;
query.Skip(WPP_PAGE_SIZE * pageIndex).Take(WPP_PAGE_SIZE);
Run Code Online (Sandbox Code Playgroud)
我的问题是我在query.Skip(...)收到错误.
错误1'System.Data.OrderedEnumerableRowCollection'不包含'Skip'的定义,并且没有扩展方法'Skip'接受类型'System.Data.OrderedEnumerableRowCollection'的第一个参数可以找到(你是否缺少using指令或者装配参考?)
参考资料我有:
我错过了什么?