小编Gra*_*ham的帖子

WCF Web服务更改wsdl名称和targetNamespace

所有,

我对IIS上的WCF有点新,但以前做过一些ASMX Web服务.我的WCF服务已启动并正在运行,但Web服务为我生成的帮助页面具有默认名称,即页面显示:

您已创建了一项服务.

要测试此服务,您需要创建一个客户端并使用它来调用该服务.您可以使用命令行中的svcutil.exe工具执行此操作,语法如下:

svcutil.exe http:// localhost:53456/ServicesHost.svc?wsdl

在标准的ASMX站点中,我将使用方法/类属性为Web服务提供名称和命名空间.当我点击链接时,WSDL有:

<wsdl:definitions name="SearchServices" targetNamespace="http://tempuri.org/" 
Run Code Online (Sandbox Code Playgroud)

即不是我的界面中的WCF服务合同名称和命名空间.我假设MEX正在使用某种默认设置,但我想将它们更改为正确的名称.我怎样才能做到这一点?

wcf web-services

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

NUnit TestCaseSource将值传递给工厂

我正在使用NUnit 2.5.3 TestCaseSource属性并创建工厂来生成我的测试.像这样的东西:

[Test, TestCaseSource(typeof(TestCaseFactories), "VariableString")]
public void Does_Pass_Standard_Description_Tests(string text)
{
    Item obj = new Item();
    obj.Description = text;
}
Run Code Online (Sandbox Code Playgroud)

我的来源是这样的:

public static IEnumerable<TestCaseData> VariableString
{
    get
    {
        yield return new TestCaseData(string.Empty).Throws(typeof(PreconditionException))
            .SetName("Does_Reject_Empty_Text");
        yield return new TestCaseData(null).Throws(typeof(PreconditionException))
            .SetName("Does_Reject_Null_Text");
        yield return new TestCaseData("  ").Throws(typeof(PreconditionException))
            .SetName("Does_Reject_Whitespace_Text");
    }
}
Run Code Online (Sandbox Code Playgroud)

我需要做的是向变量字符串添加最大长度检查,但是这个最大长度是在被测试类中的合同中定义的.在我们的例子中它是一个简单的公共结构

   public struct ItemLengths
    {
        public const int Description = 255;
    }
Run Code Online (Sandbox Code Playgroud)

我找不到任何方法将值传递给测试用例生成器.我尝试过静态共享值,但这些值并没有被提取.我不想将文件保存到文件中,因为每次代码更改时我都需要重新生成此文件.

我想在我的测试用例中添加以下行:

yield return new TestCaseData(new string('A', MAX_LENGTH_HERE + 1))
    .Throws(typeof(PreconditionException));
Run Code Online (Sandbox Code Playgroud)

在概念上相当简单,但我发现无法做到的事情.有什么建议?

nunit testcaseattribute

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

将routeValues的Dictionary传递给ActionLink

所有,

掌握ASP.NET MVC.到目前为止,这么好,但这个有点疯了.

我有一个视图模型,其中包含超链接的属性字典,如下所示:

menu =模型变量

Html.ActionLink(Html.Encode(menu.Name), Html.Encode(menu.Action), Html.Encode(menu.Controller), menu.Attributes, null)
Run Code Online (Sandbox Code Playgroud)

问题是"menu.Attributes"的位置需要表单中的对象:

new  { Name = "Fred", Age=24 }
Run Code Online (Sandbox Code Playgroud)

据我所知,这个匿名对象实际上是通过反射转换为字典,但是你不能在第一时间将字典传递给它!

为链接生成的Html只显示字典类型.

我到底怎么绕这个?重点是它的一般和控制器可以设置菜单.以前的属性....

基于下面的帖子,我尝试了以下内容:

Html.ActionLink(Html.Encode(menu.Name), Html.Encode(menu.Action), Html.Encode(menu.Controller), new RouteValueDictionary(menu.Attributes), new Dictionary<string,object>())
Run Code Online (Sandbox Code Playgroud)

但这仍然不起作用(我猜代码内部调用带对象的泛型方法?).以上(以及我将字典传递给第4个参数的原始解决方案产生类似于此的HTML:

<a href="/EditRole?Comparer=System.Collections.Generic.GenericEqualityComparer%601%5BSystem.String%5D&amp;Count=1&amp;Keys=System.Collections.Generic.Dictionary%602%2BKeyCollection%5BSystem.String%2CSystem.String%5D&amp;Values=System.Collections.Generic.Dictionary%602%2BValueCollection%5BSystem.String%2CSystem.String%5D">EditDocumentRoles</a>
Run Code Online (Sandbox Code Playgroud)

即它使用反射和工作完全错误...

asp.net asp.net-mvc actionlink routevalues

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

如何在方法设置中为数组设置Moq It.IsAny?

我是Moq的新手(使用第4版)并且在文档上有点挣扎.

我正在尝试做的是Moq一个采用字节数组并返回一个对象的方法.就像是:

decoderMock.Setup(d => d.Decode(????).Returns(() => tagMock.Object);
Run Code Online (Sandbox Code Playgroud)

???? 是byte []的位置,但是我无法弄清楚如何制作它以便我不关心字节数组中的内容,只返回我已经设置的模拟对象.

Moq.It.IsAny期望通用.

有什么帮助吗?

.net c# unit-testing moq mocking

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