WCF在ServiceContract中的WebGet批注中为ResponseFormat属性提供了两个选项.
[ServiceContract]
public interface IService1
{
[OperationContract]
[WebGet(UriTemplate = "greet/{value}", BodyStyle = WebMessageBodyStyle.Bare)]
string GetData(string value);
[OperationContract]
[WebGet(UriTemplate = "foo", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
string Foo();
Run Code Online (Sandbox Code Playgroud)
ResponseFormat的选项是WebMessageFormat.Json和WebMessageFormat.Xml.是否可以编写自己的网络信息格式?我希望当客户端调用foo()方法时,他会获得原始字符串 - 没有json或xml包装器.
我的问题是关于使用标准.NET配置对象和自定义配置元素(可以通过扩展System.Configuration.ConfigurationSection类来定义).我们通常从System.Configuration.ConfigurationManager类的方法中获得这些,GetSection(...)作为一个例子.
加载的配置对象似乎是一个合并的配置对象,其中包含应用程序配置文件(开发人员可能创建的app.config或web.config文件)中存在的设置以及machine.config文件中定义的内容(后者随.NET Framework安装而来).
因此,我们可以假设首先使用machine.config以分层方式加载配置,并且任何用户定义的配置都覆盖默认设置,并且可以像这样查看:
我的目标是创建多层配置,以便在machine.config和app.config文件之间(如果可能,之后)之间可能存在其他配置文件:
更新
关键是 - 如果我在custom.config和app.config中定义了配置部分,我需要在调用时获得两个配置的合并版本ConfigurationManager.GetSection("MyCustomSection").理想情况下,如果我能够按照本MSDN文章中的描述执行合并,那将是很棒的.
通常,我会编写自己的配置管理器类,并尝试尽可能地获得所需的结果,但假设.NET框架对machine.config和app.config有效,我想我可能会受益于框架的内置功能.另外,我不知道如何手动触发这样的合并,如果我确实应该求助于我自己的配置管理器实现.
那么,是否可以利用配置部分/元素与自定义配置文件合并的内置机制?我特别感兴趣的是为自定义配置部分开发和支持它.该System.Configuration命名空间包含基础对象建立配置部分和元件,以及那些允许有关合并一些设置(如设置适当的ConfigurationElementCollectionType例如).这些是仅与machine.config(或Web应用程序中的多层web.config文件)合并,还是可以手动触发预加载配置文件的合并?我试图避免在任何自定义配置对象中支持自定义合并,并且可能忘记支持System.Configuration中的现有设置...
更新
根据现有的答案和评论,我想做一个重要的澄清.我能够ConfigurationSection从当前的应用程序设置(app.config/web.config)和我的custom.config物理文件加载对象.我需要知道是否有机会合并这些对象,而不需要通过框架中的一些内置方法进行反射和逐个属性比较.
注意:我希望能够更好地使用适用于.NET 3.0+的解决方案.如果您的答案针对更高版本的框架,请添加注释.
我正在使用VS2015专业版和resharper终极版,当我正在执行我的单元测试时,我开始在单元测试会话窗口中收到以下错误.
2016.09.21 14:16:54.745 ERROR System.AggregateException:发生一个或多个错误.---> System.Threading.Tasks.TaskCanceledException:任务被取消.---内部异常堆栈跟踪的结束---在System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)处于System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout,CancellationToken cancellationToken)处于JetBrains.ReSharper.UnitTestFramework. JetBrains.Rendhar.UnitTestFramework.Launch.UnitTestLaunch.RunStage(Object stageObject)--->(内部异常#0)中的Launch.Stages.DiscoveryStage.Run(CancellationToken标记)System.Threading.Tasks.TaskCanceledException:任务被取消. <---
其他项目的测试在VS2013中完美运行,但在VS2015中没有.昨天我在我的电脑上安装了几个软件包:vs14-kb3165756.exe和OpenCover.UI.vsix
我试图卸载没有解决问题的OpenCover包.
有没有办法OpenFileDialog在C:\Users\Public\Documents文件夹中启动?
我正在使用DotNet框架编写C#应用程序.我试图发动OpenFileDialog,与InitialDirectory中"C:\\Users\\Public\\Documents\\"和FileName的"world.txt".不幸的是,它OpenFileDialog正在把我放在Documents捷径而不是C:\Users\Public\Documents.
预期结果
我希望看到OpenFileDialog打开,顶部文本框显示> This PC > Windows7_OS (C:) > Users > Public > Documents,底部文本框显示world.txt.我希望如果我点击顶部文本框,它会显示C:\Users\Public\Documents.
实际结果
打开OpenFileDialog.顶部文本框显示> This PC > Documents,底部文本框显示world.txt.如果我点击顶部文本框,它会显示Documents.显示的文件夹的内容是不一样的内容C:\Users\Public\Documents.
我试过的事情我已经
在以下代码行之后停止了Visual Studio调试器中的代码:
OpenFileDialog dlg = new OpenFileDialog();
在立即窗口中,我执行了以下代码:
dlg.FileName = "world.txt"
? dlg.FileName
dlg.InitialDirectory = "C:\\NonExistentDirectory\\";
dlg.ShowDialog();
dlg.InitialDirectory = "C:\\";
dlg.ShowDialog();
dlg.InitialDirectory …Run Code Online (Sandbox Code Playgroud) 我最近开始使用Rhino,遇到了一种非常意想不到的行为,我无法克服。
问题是我有一个存根基础设施,在我的一项测试中,我需要更改预定义存根之一(在我的基础设施中)以返回与默认值不同的值。
我在以下代码中重现了该问题:
[TestFixture]
public class UnitTest1
{
private IWorker _worker;
[SetUp]
void Setup()
{
_worker = MockRepository.GenerateStub<IWorker>();
_worker.Stub(w=>w.DoWork()).Return(0);
}
[Test]
public void DoWork_StubbingFunctionTwice_CallingTheLastStub()
{
int expected = 1;
_worker.Stub(w => w.DoWork()).Return(expected);
int actual =_worker.DoWork();
Assert.AreEqual(expected, actual);
}
}
public interface IWorker
{
int DoWork();
}
Run Code Online (Sandbox Code Playgroud)
有人知道为什么犀牛存根会这样,更重要的是我怎样才能以最干净的方式解决它?
我对 dotpeek 产品有最奇怪的事情。
我从本地文件夹打开了一个旧的 dll 版本,并在 dotpeek 中看到了一些添加到新版本的代码。经过大约一天的调查,反汇编向我展示了旧代码。
有人可以向我解释如何做到这一点以及将来如何避免它。我能想到的唯一解释是新版本已加载到 GAC(全局程序集缓存)。
有人遇到过这个问题并且知道如何解决吗?
有没有人知道为什么RNGCryptoServiceProvider在试图使数字大于300,000,000时失败进行卡方检验.
我试图得到0-1,000,000,000范围内的随机数,结果我得到了失败的卡方检验,0-300,000,000范围内的数字显得比其他数字更多.
最终我将大数字形式与较小的数字(0-99*100M + 0-99,999,999)和卡方测试通过相结合.
任何人都可以大量解释这个异常吗?
我使用以下代码来获取数字
[Timeout(TestTimeout.Infinite), TestMethod]
public void TestMethodStatistic()
{
Dictionary<long, long> appearances = new Dictionary<long, long>();
UInt64 tenBillion = 10000000000;
for (UInt64 i = 0; i < 10000000; i++)
{
UInt64 random = GetSIngleRandomNumberInternal() % tenBillion;
UInt64 bucket = random /10000000;
if (!appearances.ContainsKey(Convert.ToInt64(bucket)))
{
appearances.Add(Convert.ToInt64(bucket), 0);
}
appearances[Convert.ToInt64(bucket)]++;
}
string results = "\nBucket Id\tcount\n";
foreach (var appearance in appearances)
{
results += appearance.Key+"\t"+ appearance.Value +"\n";
}
File.AppendAllText(@"C:\Result.txt",results);
}
private RNGCryptoServiceProvider rngCsp = new RNGCryptoServiceProvider();
private UInt64 …Run Code Online (Sandbox Code Playgroud) 我有一个带有visual studio 2010和多个构建目标的构建机器.我使用的所有其他目标按预期工作,由于某种原因,.net 4.6.1版本14的新版本不起作用.
当我从命令行执行构建时,我收到以下错误:
C:\ Program Files(x86)\ MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1097,5):警告MSB3644:找不到框架".NETFramework,Version = v4.6.1"的引用程序集.要解决此问题,请为此框架版本安装SDK或Targeting Pack,或者将应用程序重新定位到已安装SDK或Targeting Pack的框架版本.请注意,程序集将从全局程序集缓存(GAC)中解析,并将用于代替引用程序集.因此,您的程序集可能无法正确定位到您想要的框架.
有人可以向我解释如何解决它吗?
我有以下功能:
function addPhone()
{
var value= $('#Membership_c_tel').val();
$.ajax({
url: '/cabinet/membership/addPhone',
type: 'POST',
cache: false,
data: {'val':value},
beforeSend: function() {
},
success: function (r) {
var val=document.getElementById("Membership_c_tel").value;
$("#newly_create_tel").append("<li class="+val+">"+document.getElementById("Membership_c_tel").value+"<a href='#' class=''>x</a></li>");
$('#Membership_c_tel').val('');
},
error: function (e) {
console.log(e);
}
});
}
Run Code Online (Sandbox Code Playgroud)
的功能是负责添加<li>到<ul id="newly_create_tel ">当用户提交使用输入框ID为= Membership_c_tel数据.同时<a href="#">x</a>也加入了<li>.问题是我不知道如何<li>在按下x时删除特定元素.我怎样才能实现呢?帮我.
$('#newly_create_tel li a').click(function(event){
event.preventDefault();
});
Run Code Online (Sandbox Code Playgroud) 我需要浏览一个word文档并检索一些文本框以便修改它们.
但我需要先计算它们,我认为我所写的内容效率很低.
我想知道是否可以简化以下内容:
foreach (Microsoft.Office.Interop.Word.HeaderFooter OHeader in documentOld.Sections[1].Headers)
{
foreach (Microsoft.Office.Interop.Word.Shape shape in OHeader.Shapes)
{
if (shape.Name.Contains("Text Box"))
{
listTextBox.Add(new KeyValuePair<string, string>(shape.Name.ToString(), shape.TextFrame.TextRange.Text.ToString()));
}
}
}
int count = listTextBox.Count();
Run Code Online (Sandbox Code Playgroud)
我想知道在形状中有多少包含"文本框"的元素.
c# ×9
.net ×2
resharper ×2
unit-testing ×2
.net-4.6.1 ×1
algorithm ×1
dotpeek ×1
html ×1
javascript ×1
jquery ×1
mocking ×1
ms-office ×1
msbuild-14.0 ×1
nunit ×1
random ×1
rhino-mocks ×1
wcf ×1
webget ×1