我是WCF RESTFull服务开发的新手,我正在寻找一些有用的信息以及有关使用webHttpBinding的经验反馈,与新的WCF Web API http://wcf.codeplex.com/相比.
我正在寻找的是了解webHttpBinding的缺点,以及为什么要使用新的Web api,特别是新API解决的问题.如果你能指点我一些博客文章比较他们或只是谈论使用webHttpBinding时的问题我会很感激.先感谢您.
我想通过传递命令行参数来覆盖标准app.config的使用.如何更改默认应用程序配置文件,以便在访问ConfigurationManager.AppSettings时访问命令行中指定的配置文件?
编辑:
事实证明,加载与EXE加上.config名称不同的配置文件的正确方法是使用OpenMappedExeConfiguration.例如
ExeConfigurationFileMap configFile = new ExeConfigurationFileMap();
configFile.ExeConfigFilename = Path.Combine(Environment.CurrentDirectory, "Shell2.exe.config");
currentConfiguration = ConfigurationManager.OpenMappedExeConfiguration(configFile,ConfigurationUserLevel.None);
Run Code Online (Sandbox Code Playgroud)
这部分有效.我可以在appSettings部分看到所有键,但所有值都为null.
您将如何在ASP.NET Web API控制器中读取以下服务器变量?
HTTP_HOST
SERVER_NAME
REMOTE_HOST / REMOTE_ADDR
Run Code Online (Sandbox Code Playgroud)
我看到定义了System.Net.Http.HttpRequestMessage请求,但是我没有看到包含这些变量的集合.
我在一个带有多个主机头的IP上运行一个网站,我需要确定他们用来到那里的网站.
编辑:
结果是这样的:
((System.Web.HttpContextWrapper) Request.Properties["MS_HttpContext"])
.Request.ServerVariables["HTTP_HOST"]
Run Code Online (Sandbox Code Playgroud) 好的,所以我意识到这是一个非常模糊的问题,但请耐心等待.
我在很多场合遇到过这个问题,并且有不同的和不相关的查询.下面的查询需要很多分钟才能执行:
SELECT <Fields>
FROM <Multiple Tables Joined>
LEFT JOIN (SELECT <Fields> FROM <Multiple Tables Joined> ) ON <Condition>
Run Code Online (Sandbox Code Playgroud)
但是,只需添加连接提示,它就可以在几秒钟内查询执行:
SELECT <Fields>
FROM <Multiple Tables Joined>
LEFT HASH JOIN (SELECT <Fields> FROM <Multiple Tables Joined> ) ON <Condition>
Run Code Online (Sandbox Code Playgroud)
奇怪的是,提示中指定的JOIN类型并不是真正改善性能的因素.这似乎是因为提示导致优化器单独执行子查询然后加入.如果我为子查询创建一个表值函数(不是内联函数),我会看到相同的性能改进.例如
SELECT <Fields>
FROM <Multiple Tables Joined>
LEFT JOIN dbo.MySubQueryFunction() ON <Condition>
Run Code Online (Sandbox Code Playgroud)
任何人都有任何想法为什么优化器在这种情况下是如此愚蠢?
我目前正在观看有关ASP.NET Web API的视频课程.调用控制器时,默认情况下会以JSON格式返回数据.我只是想知道,因为当我从视频中复制这个示例项目时,我得到了XML.
沮丧很大,请帮我解决这个问题.
我是ASP.NET Web API的新手,所以请耐心等待.
UPDATE
控制器不包含特殊代码.这是简单的代码,它是从带有空读/写操作模板的API控制器生成的.
我有以下代码:
private static string boundary = "----CustomBoundary" + DateTime.Now.Ticks.ToString("x");
private static async Task<string> PostTest()
{
string servResp = "";
using (var content = new MultipartFormDataContent(boundary))
{
content.Add(new StringContent("105212"), "case-id");
content.Add(new StringContent("1/14/2014"), "dateFrom");
content.Add(new StringContent("1/15/2014"), "dateTo");
HttpClientHandler handler = new HttpClientHandler();
cookieContainer = new CookieContainer();
handler.CookieContainer = cookieContainer;
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "http://somewebsite.com/form");
request.Headers.ExpectContinue = false;
request.Content = content;
httpClient = new HttpClient(handler);
HttpResponseMessage response = await httpClient.SendAsync(request);
response.EnsureSuccessStatusCode();
servResp = await response.Content.ReadAsStringAsync();
}
return servResp;
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我在Fiddler中看到了Content-Type标头:
Content-Type: multipart/form-data; …Run Code Online (Sandbox Code Playgroud) c# content-type multipartform-data .net-4.5 dotnet-httpclient
我不能为我的生活弄清楚这一点.我有一个带有Get和Post方法的web api控制器.使用和不使用参数时,Get方法可以正常工作,但是当我尝试向其添加String参数时,帖子会中断.以下是我的代码.
路线:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{id}",
defaults: new { id = UrlParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)
控制器:
public class AuditController : ApiController
{
public String Post(String test)
{
return "Success : " + test;
}
public String Get(String test)
{
return "Success : " + test;
}
}
Run Code Online (Sandbox Code Playgroud)
请求:
var request = WebRequest.Create("http://localhost:42652/Audit");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
using (var writer = new StreamWriter(request.GetRequestStream()))
{
writer.Write("test=TEST");
}
WebResponse webResponse = request.GetResponse();
Run Code Online (Sandbox Code Playgroud)
我已经尝试了很多变化请求,我觉得有一些简单的我缺少.谢谢你的帮助.
我正在使用新的HttpClient来处理我项目的网上冲浪需求; 但是,尽管设置正确,但HttpClient不会将cookie保存到Cookie容器中,并且它始终为EMPTY.
private CookieContainer _cookieContainer = new CookieContainer();
private HttpClient HttpClient { get; set; }
private HttpClientHandler HttpClientHandler { get; set; }
public Initialize()
{
HttpClientHandler = new HttpClientHandler
{
AllowAutoRedirect = true,
UseCookies = true,
CookieContainer = _cookieContainer
};
HttpClient = new HttpClient(HttpClientHandler);
}
public CookieContainer Cookies
{
get { return _cookieContainer; }
set { _cookieContainer = value; }
}
public void TEST()
{
//This is always empty, although I am sure that the site is saving login …Run Code Online (Sandbox Code Playgroud) 我们正在使用REST WCF服务.我们希望此REST服务上的保存操作处于事务中.有没有办法通过线路将Transaction对象传递给REST WCF服务?
有谁知道JSONP在.net 4.5 ASP.NET WEB API中是否支持返回?
对于早期版本的MVC.net或者.net,我发现了很多"自己动手",但似乎没有任何特定于以后的版本.
我意识到这可能是因为他们的早期版本将使用.net 4.5堆栈,但我很好奇是否有人已经被烘焙.
c# ×3
.net-4.5 ×2
wcf ×2
.net ×1
content-type ×1
rest ×1
sql ×1
sql-server ×1
transactions ×1
wcf-rest ×1
wcf-web-api ×1