在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上运行?
在ASP.NET中有一个System.Web.HttpRequest类,它包含ServerVariables可以从REMOTE_ADDR属性值为我们提供IP地址的属性.
但是,我找不到类似的方法从ASP.NET Web API获取远程主机的IP地址.
如何获取发出请求的远程主机的IP地址?
我在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)
这里有两个有趣的点(假设a是int和 …
我正在尝试实现自动构建过程.构建之后,运行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不会运行.
我有一个ASP.NET Web API应用程序,它应该适当地响应用户的Accept-Language标头.
目前,字符串存储在resx中,并通过Visual Studio生成的类以编译安全的方式访问.我想做的是保持当前的方法并为resx的每个翻译版本创建附属程序集.然后分析用户的Accept-Language标头以查看用户接受的语言,并从附属程序集加载所请求语言的资源.
我想我可以通过ResourceManager在帮助下创建一组特定于语言的对象来实现所有这些行为,ResourceSet但是由于Visual Studio负责自动更新resx的类,因此无法保持编译时的安全性.文件.
动态选择本地化语言资源的最佳方法是什么?
我正在使用Visual Studio 2010并启动了控制台应用程序项目.
VS生成入口点为_tmain(int argc, wchar_t *argv[]).相反,我需要入口点main(int argc, char *argv[])- 只是一个标准的控制台应用程序.
我需要从默认设置更改哪些设置以及它如何工作?
我在Automapper的文档或单元测试中找不到有关列表项映射顺序的信息。如果我尝试将映射new List<int>() { 1, 2, 3, 4 }到另一个List<int>,是否可以确保新列表中的项目总是{ 1, 2, 3, 4 }相同的顺序?
Automapper的有关列表的单元测试仅检查新列表中是否包含项目,并且没有关于项目顺序的假设。
如何在Notepad ++的代码的每一行中替换字符'='之前的所有单词?
c# ×4
.net ×2
asp.net ×1
automapper ×1
c++ ×1
localization ×1
notepad++ ×1
nunit ×1
regex ×1
visual-c++ ×1