我有一个带有简单HTML页面的ASP.NET Web应用程序和一些通过SignalR进行通信的JavaScript.这很好.现在我试图从另一个项目(在同一个解决方案中)调用Hub上的方法,并使用.NET Signalr Client Api:
var connection = new HubConnection("http://localhost:32986/");
var hub = connection.CreateHubProxy("MessageHub");
connection.Start();
hub.Invoke("SendMessage", "", "");
Run Code Online (Sandbox Code Playgroud)
最后一行导致InvalidOperationException: The connection has not been established.但我可以从我的JavaScript代码连接到集线器.
如何使用C#代码连接到Hub?
UPDATE
写完这篇文章后的那一刻,我试着添加.Wait()并且它有效!所以这将做:
var connection = new HubConnection("http://localhost:32986/");
var hub = connection.CreateHubProxy("MessageHub");
connection.Start().Wait();
hub.Invoke("SendMessage", "", "");
Run Code Online (Sandbox Code Playgroud) 扔FaultException<CustomFault>这样的时候:
throw new FaultException<CustomFault>(new CustomFault("Custom fault message"));
Run Code Online (Sandbox Code Playgroud)
我得到以下内容:"此错误的创建者未指定原因." 现在根据这篇MSDN文章,一个不需要使用FaultReason
我有以下服务合同:
[OperationContract]
[FaultContract(typeof(CustomFault))]
CustomType[] SomeMethod(int someParameter);
[DataContract]
public class CustomFault
{
private string report;
public CustomFault(string message)
{
this.report = message;
}
[DataMember]
public string Message
{
get { return this.report; }
set { this.report = value; }
}
}
Run Code Online (Sandbox Code Playgroud)
有关MSDN文章的评论表明它必须使用另一个FaultReason,但在其他几个地方,我看到有人认为FaultReason除非必要,否则你不应该使用它.
所以我的问题如下; 是否真的必须使用FaultReason,如果不是 - 我如何防止在尝试抛出时引发的异常FaultException?
编辑
通过从运行示例项目这篇文章中,我得到了excact相同的行为.也许这是由.NET中的更新引起的,文档/样本没有更新.
我有一个包含一些泛型方法的存储库类.一个是
public IEnumerable<T> FindAll<T>(Expression<Func<T, bool>> predicate) where T : class
{
return GetDbSet<T>().Where(predicate);
}
Run Code Online (Sandbox Code Playgroud)
对于单元测试,我有一个TestRepository使用内存中对象而不是数据库.该TestRepository覆盖的FindAll方法,我想控制返回什么.所以我希望能够做到这样的事情:
public override IEnumerable<T> FindAll<T>(Expression<Func<T, bool>> predicate)
{
return MyEntities.Where(predicate).Cast<T>();
}
Run Code Online (Sandbox Code Playgroud)
但MyEntities.Where()只接受一个Expression<Func<MyEntity, bool>>.
如何将通用表达式转换/转换为强类型表达式?
我正在尝试检测Lync客户端中的传入呼叫.这是通过在描述订阅的Lync客户端ConversationManager.ConversationAdded事件做这个职位
但是,通过使用此方法,如果在调用者调用之前与调用者的对话窗口已打开,则无法检测传入呼叫.例如,如果我正在和朋友聊天,因此有一个打开的对话窗口,而这位朋友决定给我打电话,则不会触发ConversationAdded事件.
当我与呼叫者进行了有效对话时,如何检测来电?
谢谢,尼克拉斯
使用Lync 2010 API时,LyncClient可以进入该Invalid状态.例如,如果关闭Lync进程,则会发生这种情况.再次启动Lync时,调用将Lync.GetClient()返回状态中的Lync客户端引用Invalid.阅读MSDN文档不是很有用 - Invalid没有描述状态:http://msdn.microsoft.com/en-us/library/microsoft.lync.model.clientstate_di_3_uc_ocs14mreflyncclnt.aspx
我的问题是; 如何检索不在Invalid状态的Lync客户端引用?
谢谢!
我正在实现一个WCF Web服务,负责通过使用多个绑定通过REST和SOAP发布数据.该服务将托管在IIS上.
我以前写了一些WCF服务,并且通过使用web.config和在Global.asax文件中设置路由来了解一些配置,但是我对如何制作最"干净"的配置或最佳实践感到困惑配置WCF服务.
这是我到目前为止所得到的:
web.config可用于设置绑定,端点,安全性等 - 在IIS上托管服务时是否需要这样做,还是可以在IIS上完成配置?
通过使用Global.asax,我们可以配置路由(以及许多其他东西).但这是正确的地方吗?
void Application_Start(object sender, EventArgs e)
{
RouteTable.Routes.Add(new ServiceRoute("Service", new WebServiceHostFactory(), typeof(Service)));
}
Run Code Online (Sandbox Code Playgroud)
我花了一些时间在谷歌搜索这个主题,似乎每个链接都有自己对如何完成任务的看法.
因此,我想了解如何配置/实现WCF服务以支持以下内容:
为了记录,我知道如何使用SOAP/REST发布数据 - 这不是问题.我只是想为服务做出最干净/最小化的配置.
任何反馈都非常感谢.
你如何做我的MonoDroid?
public class ItemListAdapter : BaseAdapter
{
IEnumerable<Item> items;
public override Java.Lang.Object GetItem(int position)
{
items.ElementAt(position);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是我需要覆盖GetItem()因为我的子类BaseAdapter,但显然上面会导致编译器错误.
有任何想法吗?
我有一个服务在循环中运行一些不同的任务,直到服务停止.但是,我调用Web服务和此调用的其中一个任务可能需要几分钟才能完成.我希望能够立即停止服务,"取消"Web服务调用而不调用,Thread.Abort因为这会导致一些奇怪的行为,即使线程正在做的唯一事情是调用此Web服务方法.
如何取消或中断同步方法调用(如果可能的话)?或者我应该尝试不同的方法?
我试图使用AutoResetEvent,然后调用Thread.Abort哪个在下面的代码示例中正常工作,但是当在实际服务中实现此解决方案时,我得到一些意外的行为,可能是因为我正在使用的外部库中发生了什么.
AutoResetEvent并且Thread.Abort:
class Program
{
static void Main(string[] args)
{
MainProgram p = new MainProgram();
p.Start();
var key = Console.ReadKey();
if (key.Key == ConsoleKey.Q)
p.Stop();
}
}
class MainProgram
{
private Thread workerThread;
private Thread webServiceCallerThread;
private volatile bool doWork;
public void Start()
{
workerThread = new Thread(() => DoWork());
doWork = true;
workerThread.Start();
}
public void Stop()
{
doWork = false;
webServiceCallerThread.Abort();
}
private void DoWork()
{
try …Run Code Online (Sandbox Code Playgroud) 如果有一个代码:
data.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
(数据是ObjectContext)
在MSDN文档列出了OptimisticConcurrencyException为抛出.这很好但我知道UpdateException也可以抛出(也可能是其他人).我怎么知道方法可以抛出哪些异常?
我不想抓住,Exception因为我只想捕捉我知道我能以某种方式处理的异常.这通常是说 - 不仅仅是上面的例子.必须有一些方法可以知道"内置".NET方法抛出的异常.
c# ×9
lync ×2
wcf ×2
.net ×1
android ×1
global-asax ×1
java ×1
lambda ×1
lync-2010 ×1
signalr ×1
try-catch ×1
unit-testing ×1
web-config ×1
web-services ×1