我们正在开发一个 Silverlight 4/5 应用程序,该应用程序通过由 Windows 服务托管的 NetTcp WCF 服务与服务器进行通信。
在某些情况下,我们会收到SfxServerDidNotReply错误
这在网上几乎没有记录。遇到同样错误的人还没有在任何地方发布任何答案。
这是一个没有给出答案的 MSDN 线程。
我们还可以在这个ServiceChannel.cs类中找到参考。但这段代码似乎仅在通道为双向时才会抛出异常,而我们的情况并非如此。
此外,此错误发生在客户端,监控服务服务器端没有显示任何内容。
任何想法?这里有 WCF 专家吗?
public class Derived : BaseClass
{
public Derived(string name) : base(name) {}
public static implicit operator BaseClass(Derived derived)
{
return new BaseClass(derived.ColorHex);
}
public static implicit operator Derived(BaseClass baseclass)
{
return new Derived(baseclass.name);
}
}
Run Code Online (Sandbox Code Playgroud)
这不行.为什么不允许?
我可以写出有必要的逻辑,特别是在从基础转换为派生的逻辑时.
编辑:更改了问题的标题
为了说明问题,这是我的设置的简化版本.我有一个像这样的工厂:
public interface IFactory{ }
public class Factory : IFactory
{
public Factory()
{
Console.WriteLine("parameterless");
}
//public Factory(int i)
//{
// Console.WriteLine("with parameter : {0}", i);
//}
}
Run Code Online (Sandbox Code Playgroud)
测试它的程序是一个consoleApp.足以证明我的观点.
static void Main(string[] args)
{
Init();
var factory1 = ObjectFactory.GetInstance<IFactory>();
var factory2 = ObjectFactory.GetInstance<IFactory>();
var factory3 = ObjectFactory.GetInstance<IFactory>();
Console.Read();
}
Run Code Online (Sandbox Code Playgroud)
我在我的Init静态方法中设置了strucutreMap.
public static void Init()
{
ObjectFactory.Initialize(x =>
{
//insert Initialization code here.
});
}
Run Code Online (Sandbox Code Playgroud)
如果我只有一个构造函数并设置StructureMap,如下所示:
x.For<IFactory>().Use<Factory>();
Run Code Online (Sandbox Code Playgroud)
工作完美,输出显示无
参数无
参数无
参数
每次调用都会构建一个新实例.
现在,如果我取消注释第二个构造函数,但我想使用无参数构造函数,并使用相同的默认生活方式.我该怎么办?
我试过了:
x.SelectConstructor<IFactory>(() => new Factory());
x.For<IFactory>().Use<Factory>();
Run Code Online (Sandbox Code Playgroud)
它不起作用:缺少InstanceKey的请求实例属性"i"
如果我喜欢这样: …
我有一个搜索表单,可以在不同的提供商搜索.我开始时有一个基本控制器
public SearchController : Controller
{
protected readonly ISearchService _searchService
public SearchController(ISearchService searchService)
{
_searchService= searchService;
}
public ActionResult Search(...)
{
// Use searchService to query and return a view.
}
}
Run Code Online (Sandbox Code Playgroud)
和儿童控制器
TwitterController : SearchController
{
...
}
NewsController : SearchController
{
...
}
Run Code Online (Sandbox Code Playgroud)
我使用StructureMap在控制器中插入所有依赖项.通过此设置,我可以根据正在实例化的控制器的类型更改SearchService.
x.For<ISearchService>().ConditionallyUse(o =>
{
o.TheDefault.Is.OfConcreteType<NewsSearchService>();
o.If(c => c.ParentType == typeof(TwitterController))
.ThenIt.Is.OfConcreteType<TwitterSearchService>();
...
});
Run Code Online (Sandbox Code Playgroud)
这甚至允许我为每个控制器设置不同的视图,(只是放置相应的文件夹(Twitter,新闻......),而父控制器仍在处理所有搜索,只需简单
return View(results)
Run Code Online (Sandbox Code Playgroud)
它显示特定于推特,新闻或其他的正确视图
现在这很酷,看起来很棒,我只有一个表单,不同的视图显示在同一页面的选项卡中.这就是这种方法开始变得复杂的地方.表单必须发布到/ Twitter以在Twitter中搜索,到/新闻搜索新闻...这意味着我应该根据我的标签更改表单的操作参数,并在表单返回时显示正确的选项卡取决于..网址?疯狂随之而来.
如果你已经建立了这样的东西或知道什么是最好的方法,欢迎提出建议.
现在我认为使用表单中的参数并发布到单个控制器会减少痛苦.我正在考虑根据此参数注入正确的SearchService.什么是最好的方法?我想过使用模型活页夹,
所以我的ActionMethod看起来像这样:
public ActionResult Search(ISearchService service, Query query)
{
var results = service.Find(query);
}
Run Code Online (Sandbox Code Playgroud)
但我认为需要在ModelBinder中进行这样的调用 …
这就是我所拥有的.那种工作.
it "should filter by name" do
users = users.search(:name => "s")
users.each {|u|
u.name.should be_starts_with("s")
}
end
Run Code Online (Sandbox Code Playgroud)
但是,rspec返回的错误消息真的很差......
期望starts_with?("s")返回true,得到错误
有没有办法获得更精确的消息,显示失败的元素,或至少它的索引?
我正在显示异步加载数据的图表,因为搜索是获取数据的工作非常繁重.数据必须以XML格式返回,以使图表库满意.
我的ActionMethods返回一个ContentResult,其类型设置为text/xml.我使用Linq to XML构建我的Xml并调用ToString.这很好但是测试并不理想.
我有另一个想法来实现这一点,即返回一个使用XSLT View引擎构建我的XML的视图.
我很好奇,我总是试图以"正确的方式"做事.那你们怎么处理这样的场景呢?
您是否实现了不同的ViewEngine(如xslt)来构建XML,或者在控制器内部构建XML(或者为控制器提供服务)?
编辑:
由于我需要将数据传递给图表库,我必须遵循他们的xml结构.他们的符号不是我想要建立我的模型类的方式.这就是为什么我自己使用Linq to XML构建XML并想知道模板是否会更好.
简单的序列化不是我想要的
我是初学者,我一直在读一本关于C++的书,我正在写一个关于函数的章节.我写了一个来反转一个字符串,将它的副本返回给main并输出它.
string reverseInput(string input);
int main()
{
string input="Test string";
//cin>>input;
cout<<reverseInput(input);
return 0;
}
string reverseInput(string input)
{
string reverse=input;
int count=input.length();
for(int i=input.length(), j=0; i>=0; i--, j++){
reverse[j]=input[i-1];
}
return reverse;
}
Run Code Online (Sandbox Code Playgroud)
以上似乎都有效.更改以下代码时会发生此问题:
string input="Test string";
Run Code Online (Sandbox Code Playgroud)
至:
string input;
cin>>input;
Run Code Online (Sandbox Code Playgroud)
在此更改之后,反向函数仅返回第一个输入字的反转,而不是整个字符串.我无法弄清楚我哪里出错了.
最后,是否有更优雅的方法通过使用引用来做到这一点,而无需复制输入,以便输入变量本身被修改?
如何使用双指针字段初始化结构?我试图初始化一个结构如下:
type atype struct {
val string
}
a := &struct {
StringValue string
Pointer **atype
}{
StringValue: "FOO",
//this is the relevant bit
Pointer : &(&atype{
val: "test"
})
}
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误: invalid pointer type **basicAppConfig for composite literal
我的逻辑有什么问题?我把指针指向一个指向值的指针.
我也试过用
reflect.PtrTo(&atype{
val: "string"
})
Run Code Online (Sandbox Code Playgroud)
没有成功...
我需要在多线程应用程序中构建一个唯一的文件名,该文件序列化磁盘上的一些数据.我可以使用什么方法来确保唯一的名称.该应用程序之前没有多线程,并且正在使用Ticks.当使用多个线程时,它失败的速度比我预期的要快得多.我现在将CurrentThreadId添加到文件名中,应该这样做
string.Format("file_{0}_{1}.xml", DateTime.Now.Ticks, Thread.CurrentThread.ManagedThreadId)
Run Code Online (Sandbox Code Playgroud)
这样做有什么"聪明"的方法吗?
.net ×2
asp.net-mvc ×2
c# ×2
c++ ×1
file ×1
function ×1
go ×1
operators ×1
rspec ×1
ruby ×1
silverlight ×1
string ×1
structuremap ×1
unique ×1
unit-testing ×1
wcf ×1
words ×1
xml ×1