我想将LinqPad连接到WCF Web服务,该服务在表单的URI中公开其WSDL信息http://server.example.com/Product/Service/Version/Soap11?wsdl.我可以成功地将此URI添加为Visual Studio WCF Web服务引用,它也可以与WcfTestClient一起使用.
连接到调用方法时,服务的实际端点是http://server.example.com/Product/Service/Soap11.
当我尝试将Web服务添加为LinqPad连接时,如果我指定Web服务的URI(包括?wsdl查询),我会收到一条LinqPad错误消息"ArgumentException:期望一个绝对的,格式良好的http URL,没有查询或片段.参数名称:serviceRoot".如果我省略?wsdl查询,我会收到400 Bad Request回复.
(400 Bad Request当我尝试创建Visual Studio Web服务引用时,我得到相同的响应,或者将服务添加到WcfTestClient,而不附加?wsdl到URI).
我可以在客户端更改任何内容以使LinqPad成功连接到此Web服务吗?或者我是否需要在服务器端搞乱配置?我不控制我正在尝试连接的Web服务,但如果必须的话,我可以在服务器上调整一些配置文件.
根据各种网页,orca.msi/orca.exe主要作为Windows SDK的一部分进行分发.
我安装了Visual Studio 2015 Professional Update 3.我安装了所有"通用Windows应用程序开发工具"组件,其中包括三个不同版本的Windows 10 SDK(10.0.14393,10.0.10586,10.0.10240).
但我在我的机器上的任何地方都找不到orca.msi或orca.exe.此工具是否已不再与Windows SDK一起打包?我是否还需要安装一个较旧的Windows SDK?是否有可选的Visual Studio 2015组件可以安装以获得Orca?
orca.exe的MSDN页面最终将我引导至Microsoft Windows SDK for Windows 7和.NET Framework 3.5 SP1的下载页面.这是包含orca.msi的最新 SDK,还是可以在较新的SDK中找到,例如Win7/.NET4.0或Windows 8或Windows 8.1 SDK?
在下面显示的示例代码中,"CompileError"方法将无法编译,因为它需要方法中where T : new()显示的约束CreateWithNew().但是,该CreateWithActivator<T>()方法在没有约束的情况下编译得很好.
public class GenericTests
{
public T CompileError<T>() // compile error CS0304
{
return new T();
}
public T CreateWithNew<T>() where T : new() // builds ok
{
return new T();
}
public T CreateWithActivator<T>() // builds ok
{
return Activator.CreateInstance<T>();
}
}
Run Code Online (Sandbox Code Playgroud)
为什么是这样?
据/sf/answers/115437591/,它引用MSDN文档,和这个问题时,new T()仿制药的表达实际上是实现使用Activator.CreateInstance<T>().所以我不明白为什么调用new T()要求泛型类型的约束方式在使用时可以省略Activator.CreateInstance<T>().
或者,以另一种方式提出问题:where T : new()如果T通过直接使用完全相同的底层基础架构,在没有约束的情况下在通用方法中创建实例很容易,那么约束的重点是什么?
有两个默认任务总是添加到新创建的 TwinCAT 项目中:I/O 空闲任务和 PlcAux 任务。我想知道这些任务的作用和职责是什么?例如,当我改变它们各自的循环时间时,会产生什么影响。
\nBeckhoff 的 InfoSys 上没有关于这些任务的信息。我也向 Beckhoff 寻求支持,但只得到了以下简短的答复:
\n\n\n\n
\n- I/O 空闲任务:在创建 EtherCAT 主站时创建。与 CoE 读/写、文件下载等节点的异步通信。IO 空闲管理 EtherCAT 状态机(进入 PreOp、SafeOp、Op)。它不直接更新 IO。
\n- PlcAuxTask:具有非常低的优先级。任何类型的 ADS 通信。
\n
在互联网的其余部分,我只找到了德语的解释:
\n\nIO-Idle Task ist ua zust\xc3\xa4ndig f\xc3\xbcr die StateMaschine des EtherCATs...\nF\xc3\xbcr die IOs selber(也称为 EtherCAT 触发和数据传输) ist sie nicht zust\xc3\xa4ndig。 \nAllgemein w\xc3\xbcrde ich mal sagen: Die Standard-Konfig ist eigentlich OK, viel langsamer als die 1msec w\xc3\xbcrde ich sie nicht machen da du …
我有一个TopShelf服务,它使用异步代码连接到Web服务和其他应用程序服务器.
如果它无法在启动时初始化其连接,则服务应记录一些错误并正常停止.
我已经看过这个关于在不满足启动条件时停止TopShelf的问题.这个答案谈到使用TopShelf HostControl来停止服务.
但是,答案依赖于该ServiceConfigurator<T>.WhenStarted<T>(Func<T, HostControl, bool> start)方法.
我目前正在以标准方式配置TopShelf服务:
x.Service<MyService>(s =>
{
s.ConstructUsing(() => new MyService());
s.WhenStarted(s => s.Start());
s.WhenStopped(s => s.Stop());
});
Run Code Online (Sandbox Code Playgroud)
但是我的服务Start()方法实际上async是这样定义的:
public async void Start()
{
await Init();
while (!_canceller.Token.IsCancellationRequested)
{
await Poll();
}
}
Run Code Online (Sandbox Code Playgroud)
这似乎工作正常.但是我在函数的几个地方使用了await关键字.所以,我不能简单地改变我的Start()方法来取一个HostControl并返回一个bool,因为我必须Task<bool>从一个async方法返回.
我目前正在允许异常从Start()函数冒出来,以便TopShelf可以看到它们并在异常冒泡时自动停止服务.但是,我的代码完全没有处理异常,因此我在写入的各种日志中最终出现了令人讨厌的未处理异常错误消息.我希望用一个很好的错误消息和一个干净的服务关闭来替换.
所以,我有两个问题:
async void Start()TopShelf 的方法有什么问题吗?Init()抛出异常,优雅地记录异常细节,然后服务停止,因为我的服务运行async代码?我想将大型XML文档加载到XDocument对象中.使用简单的同步方法XDocument.Load(path, loadOptions)效果很好,但在加载大型文件(特别是来自网络存储)时,在GUI上下文中会长时间阻塞.
我写了这个异步版本,旨在提高文档加载的响应能力,特别是在通过网络加载文件时.
public static async Task<XDocument> LoadAsync(String path, LoadOptions loadOptions = LoadOptions.PreserveWhitespace)
{
String xml;
using (var stream = File.OpenText(path))
{
xml = await stream.ReadToEndAsync();
}
return XDocument.Parse(xml, loadOptions);
}
Run Code Online (Sandbox Code Playgroud)
但是,在从本地磁盘加载的200 MB XML原始文件上,同步版本将在几秒钟内完成.异步版本(在32位上下文中运行)反而抛出OutOfMemoryException:
at System.Text.StringBuilder.ToString()
at System.IO.StreamReader.<ReadToEndAsyncInternal>d__62.MoveNext()
Run Code Online (Sandbox Code Playgroud)
我想这是因为临时字符串变量用于将原始XML保存在内存中以供解析XDocument.据推测,在同步场景中,XDocument.Load()能够流式传输源文件,并且永远不需要创建单个巨大的String来保存整个文件.
有没有办法让两全其美?加载XDocument完全异步的I/O,而不需要创建一个大的临时字符串?
使用Sparx Enterprise Architect 12.1,我对UML元素做了一些操作,导致在所有显示UML元素的图中,该元素都用一个红色小箭头装饰。对于我的一生,我无法弄清楚箭头的含义,箭头所对应的设置或属性,也无法弄清楚如何摆脱它。有人可以帮忙吗?
我已经安装了用于商业智能的SQL Server数据工具(SSDT-BI)版本14.0.61705.170和SQL Server报告服务(SSRS)版本14.0.608.142。
我正在尝试升级和编辑较旧的报告文件的集合,以用于当前版本的SSRS。项目升级(显然)正常,并且可以在SSDT-BI报表编辑器中查看报表。
但是,每当我尝试保存任何这些报告时,都会弹出一个错误消息框,提示“未知报告版本:9.0”。
我怀疑这是因为RDL文件太旧了,但是在RDL文件中的任何地方我都看不到9.0,所以我不确定需要进行哪些调整才能再次保存文件。也许是XML模式名称或类似名称?
RDL文件中的主要名称空间当前为 http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition
“ 9.0版”可能对应于SQL Server 2005,因为那是SQL Server发行版的主要版本号,而2005可以在架构命名空间中找到。
该文件说:
可以升级在任何早期版本的Reporting Services中创建的报告。其中包括以下版本:
- SQL Server 2008
- SQL Server 2008 R2
- SQL Server 2012
- SQL Server 2014
那么...如何升级这些报告以与现代SSRS版本完全兼容?
在 VSIX 项目中添加模板自定义命令时,Visual Studio 生成的脚手架代码包括以下常规结构:
\n /// <summary>\n /// Initializes a new instance of the <see cref="GenerateConfigSetterCommand"/> class.\n /// Adds our command handlers for menu (commands must exist in the command table file)\n /// </summary>\n /// <param name="package">Owner package, not null.</param>\n /// <param name="commandService">Command service to add command to, not null.</param>\n private GenerateConfigSetterCommand(AsyncPackage package, OleMenuCommandService commandService)\n {\n this.package = package ?? throw new ArgumentNullException(nameof(package));\n commandService = commandService ?? throw new ArgumentNullException(nameof(commandService));\n\n var menuCommandID = new CommandID(CommandSet, CommandId);\n var menuItem = …Run Code Online (Sandbox Code Playgroud) 我有一些看起来像这样的代码:
foreach(var obj in collection)
{
try
{
// WriteToFile returns the name of the written file
string filename = WriteToFile(obj);
SendFileToExternalAPI(filename);
}
catch ( ArbitraryType1Exception e )
{
LogError(e);
continue;
}
...
catch ( ArbitaryTypeNException e )
{
LogError(e);
continue;
}
finally
{
try
{
File.Delete(filename);
}
catch (Exception e)
{
LogError(e);
}
}
}
Run Code Online (Sandbox Code Playgroud)
目标是尝试为集合中的每个对象写出一个临时文件,尝试将该文件加载到需要文件名的外部API中,然后在完成后清理临时文件.如果在将文件写入磁盘或将其加载到外部API时发生错误,我只想记录错误并转到下一个对象; 我不能问用户该做什么.
当你在catch处理程序中有continue语句时,我有点不确定finally块的时序如何工作.无论是否在try块中抛出异常,此代码是否会(尝试)删除正确的文件?或者,在finally块运行之前,catch语句中的continue是否生效?
我需要导入一个包含服务器产品标准配置设置的.reg文件.但是,单个Windows框可能包含多个服务器实例.每个服务器实例在Windows注册表中都有自己的配置键.
第一个实例将具有默认注册表项:
HKLM\SOFTWARE\<Vendor>\<Product>\Settings
Run Code Online (Sandbox Code Playgroud)
任何其他实例都将具有变体名称,例如:
HKLM\SOFTWARE\<Vendor>\<Product>\Settings-foo
HKLM\SOFTWARE\<Vendor>\<Product>\Settings-bar
HKLM\SOFTWARE\<Vendor>\<Product>\Settings-baz
Run Code Online (Sandbox Code Playgroud)
等等...
注册表文件包含需要应用于每个服务器实例的设置.注册表子键的结构在每个键中是相同的.因此,手动部署过程是获取.reg文件并执行文件搜索和替换"SOFTWARE\<Vendor>\<Product>\Settings\"并替换它"SOFTWARE\<Vendor>\<Product>\Settings-foo\",然后导入新调整的.reg文件.为酒吧,巴兹等冲洗和重复
我想要做的是编写一个PowerShell脚本,该脚本获取所有"Settings-"键的列表,并在导入.reg文件之前进行等效的搜索和替换.我还没有找到可以导入.reg文件的cmdlet,所以我想我必须调用reg.exe或regedit.exe.这两个程序都允许您导入磁盘上的.reg文件的内容.
我的问题是,我是否真的必须创建.reg文件并将它们写入磁盘,以便我可以调用reg.exe /Import <filename>或regedit.exe /S <filename>?或者有什么方法我可以加载原始.reg文件,在内存中修改它,并获取reg.exe或regedit.exe导入修改后的注册表项,而无需将整个堆栈的.reg文件写入磁盘?
我已经写了返回查询IEnumerable<Item>,其中Item类有几种不同的成员:
public class Item
{
public string Name { get; private set; }
public string Type { get; private set; }
public IEnumerable<Property> Properties;
public IEnumerable<Item> Items;
public Item(XElement itemElement)
{
Name = itemElement.Attribute("name").Value;
Type = itemElement.Attribute("type").Value;
Properties = from property in itemElement.Elements("Property")
select new Property(property);
Items = from item in itemElement.Elements("Item")
select new Item(item);
}
}
Run Code Online (Sandbox Code Playgroud)
我不喜欢LINQPad选择将Item属性分配给结果表中的列的顺序.我想列出现的顺序Name,Type,Properties,Items,但LINQPad默认是显示Properties,Items,Name,Type.有没有办法提示LINQPad属性列应该是什么顺序?
c# ×5
async-await ×3
asynchronous ×2
linqpad ×2
.net ×1
activator ×1
flow-control ×1
generics ×1
linq-to-xml ×1
migration ×1
mpf ×1
orca ×1
powershell ×1
registry ×1
ssdt-bi ×1
ssrs-2016 ×1
topshelf ×1
twincat ×1
uml ×1
vsix ×1
wcf ×1
web-services ×1
wsdl ×1