小编sil*_*ver的帖子

WebGet的WCF ResponseFormat

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包装器.

c# wcf responseformat webget

23
推荐指数
2
解决办法
3万
查看次数

在.NET中运行时合并自定义配置节

我的问题是关于使用标准.NET配置对象和自定义配置元素(可以通过扩展System.Configuration.ConfigurationSection类来定义).我们通常从System.Configuration.ConfigurationManager类的方法中获得这些,GetSection(...)作为一个例子.

加载的配置对象似乎是一个合并的配置对象,其中包含应用程序配置文件(开发人员可能创建的app.configweb.config文件)中存在的设置以及machine.config文件中定义的内容(后者随.NET Framework安装而来).

因此,我们可以假设首先使用machine.config以分层方式加载配置,并且任何用户定义的配置都覆盖默认设置,并且可以像这样查看:

  • machine.config中
    • app.config(覆盖/合并在machine.config中找到的相应元素)

我的目标是创建多层配置,以便在machine.configapp.config文件之间(如果可能,之后)之间可能存在其他配置文件:

  • machine.config中
    • custom.config(自动配置干扰machine.config和app.config文件)
      • app.config - 现在app.configmachine.configcustom.config合并

更新

关键是 - 如果我在custom.configapp.config中定义了配置部分,我需要在调用时获得两个配置的合并版本ConfigurationManager.GetSection("MyCustomSection").理想情况下,如果我能够按照本MSDN文章中的描述执行合并,那将是很棒的.


通常,我会编写自己的配置管理器类,并尝试尽可能地获得所需的结果,但假设.NET框架对machine.configapp.config有效,我想我可能会受益于框架的内置功能.另外,我不知道如何手动触发这样的合并,如果我确实应该求助于我自己的配置管理器实现.

那么,是否可以利用配置部分/元素与自定义配置文件合并的内置机制?我特别感兴趣的是为自定义配置部分开发和支持它.该System.Configuration命名空间包含基础对象建立配置部分和元件,以及那些允许有关合并一些设置(如设置适当的ConfigurationElementCollectionType例如).这些是仅与machine.config(或Web应用程序中的多层web.config文件)合并,还是可以手动触发预加载配置文件的合并?我试图避免在任何自定义配置对象中支持自定义合并,并且可能忘记支持System.Configuration中的现有设置...


更新

根据现有的答案和评论,我想做一个重要的澄清.我能够ConfigurationSection从当前的应用程序设置(app.config/web.config)和我的custom.config物理文件加载对象.我需要知道是否有机会合并这些对象,而不需要通过框架中的一些内置方法进行反射和逐个属性比较.


注意:我希望能够更好地使用适用于.NET 3.0+的解决方案.如果您的答案针对更高版本的框架,请添加注释.

.net c# configuration configurationmanager

17
推荐指数
3
解决办法
4755
查看次数

单元测试会话无法执行

我正在使用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包.

c# resharper unit-testing visual-studio-2015

8
推荐指数
2
解决办法
2757
查看次数

我可以在C:\ Users\Public\Documents中启动DotNet的OpenFileDialog吗?

有没有办法OpenFileDialogC:\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)

.net c# openfiledialog

8
推荐指数
1
解决办法
602
查看次数

Rhino 模拟存根两次相同的函数无法按预期工作

我最近开始使用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)

有人知道为什么犀牛存根会这样,更重要的是我怎样才能以最干净的方式解决它?

c# nunit unit-testing rhino-mocks mocking

5
推荐指数
1
解决办法
1559
查看次数

dotpeek 显示不同版本的代码

我对 dotpeek 产品有最奇怪的事情。

我从本地文件夹打开了一个旧的 dll 版本,并在 dotpeek 中看到了一些添加到新版本的代码。经过大约一天的调查,反汇编向我展示了旧代码。

有人可以向我解释如何做到这一点以及将来如何避免它。我能想到的唯一解释是新版本已加载到 GAC(全局程序集缓存)。

有人遇到过这个问题并且知道如何解决吗?

c# resharper dotpeek

5
推荐指数
1
解决办法
1747
查看次数

RNGCryptoServiceProvider对大型随机数进行卡方检验失败

有没有人知道为什么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)

c# random algorithm

3
推荐指数
1
解决办法
270
查看次数

如果没有完整的.net框架安装,msbuild 14将无法运行

我有一个带有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)中解析,并将用于代替引用程序集.因此,您的程序集可能无法正确定位到您想要的框架.

有人可以向我解释如何解决它吗?

c# msbuild-14.0 .net-4.6.1

1
推荐指数
1
解决办法
1万
查看次数

如何删除li元素

我有以下功能:

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)

html javascript jquery

1
推荐指数
1
解决办法
504
查看次数

简化双重foreach指令

我需要浏览一个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# ms-office

-1
推荐指数
1
解决办法
285
查看次数