小编pau*_*s_l的帖子

ASP.NET Web API中具有多个GET方法的单个控制器

在Web API中,我有一类类似的结构:

public class SomeController : ApiController
{
    [WebGet(UriTemplate = "{itemSource}/Items")]
    public SomeValue GetItems(CustomParam parameter) { ... }

    [WebGet(UriTemplate = "{itemSource}/Items/{parent}")]
    public SomeValue GetChildItems(CustomParam parameter, SomeObject parent) { ... }
}
Run Code Online (Sandbox Code Playgroud)

由于我们可以映射单个方法,因此在正确的位置获得正确的请求非常简单.对于只有一个GET方法但也有Object参数的类似类,我成功使用了IActionValueBinder.但是,在上述情况下,我收到以下错误:

Multiple actions were found that match the request: 

SomeValue GetItems(CustomParam parameter) on type SomeType

SomeValue GetChildItems(CustomParam parameter, SomeObject parent) on type SomeType
Run Code Online (Sandbox Code Playgroud)

我试图通过重写ExecuteAsync方法来解决这个问题ApiController但到目前为止没有运气.关于这个问题的任何建议?

编辑:我忘了提到现在我试图在ASP.NET Web API上移动此代码,它具有不同的路由方法.问题是,如何使代码在ASP.NET Web API上运行?

c# asp.net-web-api

156
推荐指数
9
解决办法
20万
查看次数

获取远程主机的IP地址

在ASP.NET中有一个System.Web.HttpRequest类,它包含ServerVariables可以从REMOTE_ADDR属性值为我们提供IP地址的属性.

但是,我找不到类似的方法从ASP.NET Web API获取远程主机的IP地址.

如何获取发出请求的远程主机的IP地址?

c# asp.net-web-api

133
推荐指数
4
解决办法
8万
查看次数

为什么整数零不等于长零?

我在C#中发现的一段奇怪的代码(对于使用.NET的其他CLI语言也应如此structs).

using System;

public class Program
{
    public static void Main(string[] args)
    {
    int a;
    long b;

    a = 0;
    b = 0;

    Console.WriteLine(a.Equals(b)); // False
    Console.WriteLine(a.Equals(0L)); // False
    Console.WriteLine(a.Equals((long)0)); // False
    Console.WriteLine(a.Equals(0)); // True
    Console.WriteLine(a.Equals(a)); // True
    Console.WriteLine(a == b); // True
    Console.WriteLine(a == 0L); // True

    Console.WriteLine();

    Console.WriteLine(b.Equals(a)); // True
    Console.WriteLine(b.Equals(0)); // True
    Console.WriteLine(b.Equals((int)0)); // True
    Console.WriteLine(b.Equals(b)); // True
    Console.WriteLine(b == a); // True
    Console.WriteLine(b == 0); // True
    }
}
Run Code Online (Sandbox Code Playgroud)

这里有两个有趣的点(假设aint和 …

.net c#

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

未安装CLR版本4.0.30319的NUnit组件

我正在尝试实现自动构建过程.构建之后,运行nunit-console.exe上的单元测试.显示以下错误:

> c:\nunit_2.5.10\nunit-console.exe c:\builds\Output\bin\TDD.nunit /framework=4.0.30319 /nologo /trace=Off
ProcessModel: Default    DomainUsage: Default
Execution Runtime: v4.0.30319
Unhandled Exception:
System.ArgumentException: NUnit components for version 4.0.30319 of the CLR are not installed
Parameter name: targetRuntime
   at NUnit.Util.TestAgency.LaunchAgentProcess(RuntimeFramework targetRuntime, Boolean enableDebug)
   at NUnit.Util.TestAgency.CreateRemoteAgent(RuntimeFramework framework, Int32 waitTime, Boolean enableDebug)
   at NUnit.Util.TestAgency.GetAgent(RuntimeFramework framework, Int32 waitTime, Boolean enableDebug)
   at NUnit.Util.ProcessRunner.Load(TestPackage package)
   at NUnit.ConsoleRunner.ConsoleUi.Execute(ConsoleOptions options)
   at NUnit.ConsoleRunner.Runner.Main(String[] args)
Run Code Online (Sandbox Code Playgroud)

构建计算机上没有nunit-agent.exe.但是,在我的机器上甚至没有调用它,所以我认为没有必要.

为什么在某些情况下需要nunit-agent.exe但并不总是需要?应该满足哪些条件,以便nunit-agent不需要启动?

编辑:我找到了一种资源,它描述了它是如何工作的,但不是很好:http://www.nunit.org/index.php?p = nunit-agent&r = 2.5.10.它说它是在程序需要在不同于NUnit使用的框架下运行时启动的(在这种情况下,因为NUnit是为2.0编译的).但是,在我的机器上,虽然条件似乎相同,但nunit-agent.exe不会运行.

nunit

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

通过请求动态更改语言资源的好方法

我有一个ASP.NET Web API应用程序,它应该适当地响应用户的Accept-Language标头.

目前,字符串存储在resx中,并通过Visual Studio生成的类以编译安全的方式访问.我想做的是保持当前的方法并为resx的每个翻译版本创建附属程序集.然后分析用户的Accept-Language标头以查看用户接受的语言,并从附属程序集加载所请求语言的资源.

我想我可以通过ResourceManager在帮助下创建一组特定于语言的对象来实现所有这些行为,ResourceSet但是由于Visual Studio负责自动更新resx的类,因此无法保持编译时的安全性.文件.

动态选择本地化语言资源的最佳方法是什么?

.net c# asp.net localization asp.net-web-api

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

在VS(2010)中使用标准的"main"条目构建和运行C++控制台应用程序

我正在使用Visual Studio 2010并启动了控制台应用程序项目.

VS生成入口点为_tmain(int argc, wchar_t *argv[]).相反,我需要入口点main(int argc, char *argv[])- 只是一个标准的控制台应用程序.

我需要从默认设置更改哪些设置以及它如何工作?

c++ visual-studio visual-c++

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

Automapper是否保留映射的列表项顺序?

我在Automapper的文档或单元测试中找不到有关列表项映射顺序的信息。如果我尝试将映射new List<int>() { 1, 2, 3, 4 }到另一个List<int>,是否可以确保新列表中的项目总是{ 1, 2, 3, 4 }相同的顺序?

Automapper的有关列表的单元测试仅检查新列表中是否包含项目,并且没有关于项目顺序的假设。

automapper

5
推荐指数
0
解决办法
381
查看次数

如何在Notepad ++中的行中的特定字符之前替换所有单词

如何在Notepad ++的代码的每一行中替换字符'='之前的所有单词?

regex notepad++

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