小编Sys*_*ska的帖子

使用RouteAttribute对ApiControllers进行单元测试

我认为在网上进行简单搜索的结果不止于此.

最接近解决方案的是首先使用属性进行路由的方法:AttributeRouting不使用HttpConfiguration对象来编写集成测试

但是ASP.NET Web Api 2呢?

我的单元测试

HttpConfiguration config = new HttpConfiguration();
// config.MapHttpAttributeRoutes(); // This doesn't work. I guess there is needed some more plumbing to know what Controllers to search for attributes, but I'm lost here.
HttpServer server = new HttpServer(config);

using (HttpMessageInvoker client = new HttpMessageInvoker(server))
{
    using (HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Put, "http://localhost/api/accounts/10"))
    using(HttpResponseMessage response = client.SendAsync(request, CancellationToken.None).Result)
    {
        response.StatusCode.Should().Be(HttpStatusCode.Created);
    }
}
Run Code Online (Sandbox Code Playgroud)

如何注入我的控制器,以便它读取Controller上的属性并设置路由,以便我可以实际进行一些测试?

c# unit-testing asp.net-mvc-routing asp.net-web-api2

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

Mongodb,linq司机.如何使用变量或语句构造Contains

我正在使用Mongo LINQ驱动程序用于C#,效果很好.

排序很多属性,但这是一个我无法解决的问题,它可能很简单.

var identifierList = new []{"10", "20", "30"};
var newList = list.Where(x => identifierList.Contains(x.Identifier));

This is NOT supported ... 
Run Code Online (Sandbox Code Playgroud)

所以我可以这样做:

 var newList = list.Where(x => x.Identifier == "10" || x.Identifier == "20" || x.Identifier == "30");
Run Code Online (Sandbox Code Playgroud)

但由于列表是可变的......我该如何构建上述内容?还是有更好的选择吗?

list类型是IQueryable<MyCustomClass>

有关信息......这用作许多属性的过滤器.在SQL中我可以有一个父 - >子关系.但由于我不能作为主ID的父亲,我需要把所有的ID都拿出去,然后像这样构建它.

希望这是有道理的.如果需要,我会解释更多.

.net c# linq mongodb mongodb-.net-driver

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

ASP.NET MVC 4 - ModelBinder错误

所以我正在玩我的ASP.NET MVC 4解决方案.每件事情都很好,不停地添加东西,但奇怪的事情开始发生.

我的一个Models属性为null,即使我将Json中的项目传递给它.

这是javascript对象/ json传递它:

var obj = {
    "plc": "False",
    "al": ["386", "710"],
    "pl": ["9530", "211", "783"]
};
Run Code Online (Sandbox Code Playgroud)

我正在使用自定义模型绑定器...认为这可能是问题所以我把它关掉了.

尝试使用.NET中的JavaScriptSerializer来查看它是否有效:

var reader = new StreamReader(Request.InputStream);
Request.InputStream.Position = 0;
var readToEnd = reader.ReadToEnd();

var javaScript = new JavaScriptSerializer();
var searchFarmOptions = javaScript.Deserialize<Test>(readToEnd);
Run Code Online (Sandbox Code Playgroud)

得到了所有的属性...... WOOT.

所以我尝试了一个干净的ASP.NET MVC 4解决方案.重现这个bug.

这是来自Index.cshtml视图

@{
    ViewBag.Title = "title";
}

<h1>Title</h1>
Testing ... 
<script src="/Scripts/jquery-1.8.2.min.js" type="text/javascript"></script>
<script>
$(function() {
    var obj = {
        "1pllort": "False",
        "1plc": "true",
        "al": ["386", "710"],
        "pl": ["9530", "211", "783"]
    };

    var …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc model-binding

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

从MSBuild解析MSDeploy的参数

我刚刚开始玩TeamCity而且很棒.现在我让它在提交后部署到我的登台服务器,所以我总是知道我在那里运行最新版本.(这个想法来自:http://www.agileatwork.com/automatic-deployment-from-teamcity-using-webdeploy/)

但是,当网站生成一些我不想在每次发布时消除的文件时,我发现了MSDeploy的参数

-enableRule:DoNotDeleteRule
Run Code Online (Sandbox Code Playgroud)

但是如何将其附加到MSBuild命令

MSBuild.exe MvcApplication1.sln 
 /p:Configuration=Debug 
 /p:OutputPath=bin 
 /p:DeployOnBuild=True 
 /p:DeployTarget=MSDeployPublish 
 /p:MsDeployServiceUrl=https://ss-iis:8172/MSDeploy.axd 
 /p:username=user
 /p:password=pass
 /p:AllowUntrustedCertificate=True 
 /p:DeployIisAppPath=foo.bar.tld 
 /p:MSDeployPublishMethod=WMSVC 
Run Code Online (Sandbox Code Playgroud)

可以这样做吗?

或者是否有更奇特的方式从TeamCity进行自动Web部署?

msbuild teamcity msdeploy

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