我们有一个MVC3网站正在访问的WCF服务(没有安全性).
在开发人员计算机上我们没有任何问题,但是当我们的TeamCity设置构建中央版本并在IIS7下部署它时,我们第一次加载MVC3站点并访问WCF服务 - 服务调用返回消息:
System.ServiceModel.ServiceActivationException:所请求的服务, 'HTTP://本地主机:83/ABCStaticData/StaticDataService.svc' 不能启动.有关更多信息,请参阅服务器的诊断跟踪日志.**
如果我们立即再次访问同一网站,一切正常.
抛出错误时的服务器堆栈跟踪是:
服务器堆栈跟踪:
at System.ServiceModel.Channels.HttpChannelUtilities.ValidateRequestReplyResponse(HttpWebRequest request, HttpWebResponse response, HttpChannelFactory1 factory, WebException responseException, ChannelBinding channelBinding)
at System.ServiceModel.Channels.HttpChannelFactory1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
at System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
at System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout
at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message) Exception rethrown at [0]: at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at ABC.StaticData.Editor.StaticDataServiceProxy.IStaticDataService.GetAllMarkets()
at ABC.StaticData.Editor.StaticDataServiceProxy.StaticDataServiceClient.GetAllMarkets() in c:\BuildAgent\work\55a3bcc468adcccb\StaticData\ABC.StaticData.Editor\Service References\StaticDataServiceProxy\Reference.cs:line 3195
at ABC.StaticData.Editor.Controllers.MarketsController.<>c__DisplayClass22.<.ctor>b__13() in …Run Code Online (Sandbox Code Playgroud) 我有以下SignalR集线器类(仅显示顶部):
[HubName("DataServiceHub")]
public class DataServiceHub : Hub, IDataServiceHub, IDisconnect, IConnected
{
.
.
Run Code Online (Sandbox Code Playgroud)
然后,我使用Main函数中的以下代码在Console App中自托管集线器:
string hubsUrl = appSettingsReader.GetValue("hubsUrl", typeof(string)).ToString();
var hubsServer = new Server(hubsUrl);
hubsServer.Configuration.DisconnectTimeout = TimeSpan.Zero;
hubsServer.MapHubs();
hubsServer.Start();
Run Code Online (Sandbox Code Playgroud)
hubsUrl的值是"http:// localhost:4322 /"
一旦我运行了控制台应用程序如果我在Chrome浏览器"http:// localhost:4322/signalsr/hubs"中浏览,我可以在底部看到SignalR javascript和我的集线器:
signalR.dataServiceHub = {
_: {
hubName: 'dataServiceHub',
Run Code Online (Sandbox Code Playgroud)
我正在尝试从运行在HTTPS/SSL设置上的MVC3应用程序连接到此集线器(即站点URL前缀为"https:// localhost /"
在我的Razor页面中,我肯定包含SignalR js:
<script src="/Website/Scripts/kendo/2012.2.710/jquery.min.js" type="text/javascript"></script>
<script src="/Website/Scripts/jquery.signalR-0.5.3.min.js" type="text/javascript"></script>
<script src="http://localhost:4322/signalr/hubs" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
请注意,我们正在使用Kendo,因此jquery js include是通过它.
然后在$(document).ready(function(){我有以下内容:
jQuery.support.cors = true;
var connection = $.hubConnection('http://localhost:4322');
var hub = connection.dataServiceHub;
Run Code Online (Sandbox Code Playgroud)
但'hub'总是'未定义'.
我在这里错过了什么?
如果这是跨域问题 - 我该如何解决?
我在Javascript函数中具有以下JSON数据(此处已简化):
var data = [
{ Expiry: "2013-01-02T00:00:00", EndDate: "2013-01-16T00:00:00", Category: 10, Amount: 14.53 },
{ Expiry: "2013-01-02T00:00:00", EndDate: "2013-01-16T00:00:00", Category: 25, Amount: 14.86 },
{ Expiry: "2013-02-06T00:00:00", EndDate: "2013-02-20T00:00:00", Category: 10, Amount: 14.43 },
{ Expiry: "2013-02-06T00:00:00", EndDate: "2013-02-20T00:00:00", Category: 25, Amount: 14.76 }
];
Run Code Online (Sandbox Code Playgroud)
注意:对于任何特定的Expiry值,EndDate值将始终相同。
现在,理想情况下,我希望在末尾具有以下JSON(按到期日期分组,并注意在属性名称中使用Category值):
[
{
Expiry: 2013/1/2, (note: not fussed about the date format)
EndDate: 2013/1/16,
Category10: 14.53,
Category25: 14.86
},
{
Expiry: 2013/2/6,
EndDate: 2013/2/20,
Category10: 14.43,
Category25: 14.76
},
]
Run Code Online (Sandbox Code Playgroud)
但是不确定我是否会一劳永逸,因此可以解决每个日期对下的类别和金额数组的问题,然后我就可以处理这些问题以某种方式得到上述结果:
[
{ …Run Code Online (Sandbox Code Playgroud)