如果我有一个没有任何跟踪器的洪流,我刚刚开始了一个比特的客户端,所以我还没有同行...我怎么知道谁在DHT中首先连接?好像我必须知道DHT中至少有一个节点才能开始....
JS中的数组是否可以关联和索引?我希望能够通过其位置或键值查找数组中的项目..可能吗?
如果我在谷歌搜索某些内容并点击结果(mytestsite.com),该网站的引用将是谷歌搜索的URL.
现在在该站点上,有一个JS文件包含用于跟踪目的..然而,JS文件请求的引用者是mytestsite.com ...处理JS请求的服务器没有办法知道它来自从谷歌搜索?
如果我有这样的动作:
public ActionResult DoStuff(List<string> stuff)
{
...
ViewData["stuff"] = stuff;
...
return View();
}
Run Code Online (Sandbox Code Playgroud)
我可以使用以下URL点击它:
http://mymvcapp.com/controller/DoStuff?stuff=hello&stuff=world&stuff=foo&stuff=bar
Run Code Online (Sandbox Code Playgroud)
但在我的ViewPage中,我有这个代码:
<%= Html.ActionLink("click here", "DoMoreStuff", "MoreStuffController", new { stuff = ViewData["stuff"] }, null) %>
Run Code Online (Sandbox Code Playgroud)
不幸的是,MVC不够聪明,无法识别该动作采用数组,并展开列表以形成正确的URL路由.相反,它只是在对象上执行.ToString(),它只列出了List中的数据类型.
当目标Action的参数之一是数组或列表时,有没有办法让Html.ActionLink生成正确的URL?
- 编辑 -
正如Josh在下面指出的那样,ViewData ["stuff"]只是一个对象.我试图简化问题,但引起了一个无关的错误!我实际上使用的是专用的ViewPage <T>,因此我有一个紧密耦合的类型感知模型.ActionLink实际上看起来像:
<%= Html.ActionLink("click here", "DoMoreStuff", "MoreStuffController", new { stuff = ViewData.Model.Stuff }, null) %>
Run Code Online (Sandbox Code Playgroud)
其中ViewData.Model.Stuff被键入为List
所以.Net 4增加了命名和可选参数,非常甜蜜.我不需要制作尽可能多的1行重载方法.
那可以在WCF上运行吗?
我有一个复杂的类型:
[DataContract]
public class CustomClass
{
[DataMember]
public string Foo { get; set; }
[DataMember]
public int Bar { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后,我有一个WCF RESTful Web服务,其中包含:
[OperationContract]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "/class/save")]
bool Save(CustomClass custom);
Run Code Online (Sandbox Code Playgroud)
所以在浏览器端我将我的CustomClass对象jsonized到它看起来像:
var myClass = "{ foo: \"hello\", bar: 2 }";
$.ajax({
contentType: "application/json",
data: { custom: myClass },
dataType: "json",
success: callback,
type: "POST",
url: "MyService.svc/class/save"
});
Run Code Online (Sandbox Code Playgroud)
我使用$ .ajax提交数据w/jquery所以我可以手动将内容类型设置为"application/json",当它提交时,postbody看起来像
custom=<uri encoded version of myClass>
Run Code Online (Sandbox Code Playgroud)
我收到以下错误: …
WebGetAttribute是使用Method ="GET"的WebInvokeAttribute的语法糖吗?或者是否存在潜在的差异?
我在Windows服务中托管了一个WCF服务,我将其设置为"自动",因此它将在服务器启动时自动启动.服务端点是MSMQ支持的.
当我手动启动服务时,一切都很好.但是当服务在启动时启动时,我得到一个MSMQ异常:
System.TypeInitializationException: The type initializer for
'System.ServiceModel.Channels.Msmq' threw an exception. --->
System.ServiceModel.MsmqException: The version check failed with the error:
'The Message Queuing service is not available (-1072824309, 0xc00e000b)'. The
version of MSMQ cannot be detected All operations that are on the queued channel
will fail. Ensure that MSMQ is installed and is available.
at System.ServiceModel.Channels.MsmqQueue.GetMsmqInformation
(Version& version, Boolean& activeDirectoryEnabled)
at System.ServiceModel.Channels.Msmq..cctor()
--- End of inner exception stack trace ---
Run Code Online (Sandbox Code Playgroud)
看起来MSMQ还没有准备好在服务开始之前使用......有解决方案吗?
目前,我有一段代码需要对各种数据提供者进行大约7次Web服务调用.每次调用都需要几秒钟才能执行,所以我想并行运行它们以加快速度.
我将7个调用包装在Parallel.Invoke中,它可以同时运行几个东西,但在2核心服务器上,它一次只执行2个,每个核心一个.由于我正在做的就是等待Web服务调用返回,我希望它能够获取所有7并等待它们返回.
有没有办法做到这一点?或许我的方法错了?也许我需要创建对Web服务的异步调用?但那么如何等待他们全部回来再继续前进?
我有一个无序的链接列表,我保存到一边,我想点击每个链接,并确保它进入一个真实的页面,并没有404,500等.
问题是我不知道该怎么做.是否有一些我可以检查的对象会给我http状态代码或其他什么?
mylinks = Browser.ul(:id, 'my_ul_id').links
mylinks.each do |link|
link.click
# need to check for a 200 status or something here! how?
Browser.back
end
Run Code Online (Sandbox Code Playgroud) 如果我有一个事件,其处理程序返回一个bool,如果我附加多个事件会发生什么?
看这个例子
public class MyClass
{
public delegate bool MyEventHandler(object sender, EventArgs e);
public event MyEventHandler Submit;
public void DoSubmissions()
{
if (Submit != null && Submit(this, null))
{
Console.Write("HOORAY");
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以在我的例子中,处理程序在成功提交时返回true.但是我为这个事件分配了两个处理程序......会发生什么?使用第一个处理程序的返回?第二个?都不是?都?
我必须发送许多 Web 服务调用来删除 Amazon SDB 中的一堆记录(不幸的是,目前一次只能删除一个行)。
我正在使用 Amazon 的 SDB c# 库,它不使用异步 WebRequests。
目前,我使用 ThreadPool.QueueUserWorkItem 对一堆调用进行排队(我配置了我的连接管理 maxconnection 以允许一堆连接),这效果很好......当请求发出时,它会阻塞并发出另一个请求。
这是实现这一目标的错误方法吗?我应该使用异步委托并执行 BeginInvoke 和 EndInvoke 吗?
我有2个点击处理程序绑定到一个元素,如下所示:
在包含我绑定的控件的文件中,我有第一个处理程序,它执行特定于该控件的一些功能
$("#mycontrol").live("click", function() { alert("foo"); });
Run Code Online (Sandbox Code Playgroud)
在使用该控件的主页面中,我有另一个处理程序绑定到该元素以获取特定于页面的功能
$("#mycontrol").live("click", function() { alert("bar"); });
Run Code Online (Sandbox Code Playgroud)
我使用'live'因为AJAX调用一直在改变控件,所以处理程序将被重新注册.但是我需要一种方法让"foo"在"bar"之前一直发生......任何建议?
.net ×5
wcf ×4
arrays ×2
asynchronous ×2
c# ×2
javascript ×2
jquery ×2
.net-4.0 ×1
asp.net-mvc ×1
associative ×1
bittorrent ×1
delegates ×1
dht ×1
indexing ×1
json ×1
list ×1
live ×1
msmq ×1
post ×1
referrer ×1
ruby ×1
startup ×1
threadpool ×1
watir ×1
webget ×1