Используйте безопасный URL для вашего первоначального соединения, то есть вместо «http: //» используйте «https: //». Если транспорт WebSocket выбран, то Socket.IO должен автоматически использовать «wss: //» (SSL) для соединения WebSocket.
Обновление:
Вы также можете попробовать создать соединение с использованием опции «secure»:
var socket = io.connect('https://localhost', {secure: true});
Для любого имеющего подобные проблемы, я решил свою проблему. Это были несколько-сгибов.
Для DataTable, чтобы быть сериализуемым, этому нужно дать имя. Конструктор по умолчанию не дает таблице имя, таким образом:
return new DataTable();
не будет сериализуемым, в то время как:
return new DataTable("someName");
назовет таблицу, вообще передается как параметр.
Примечание, что таблице можно дать имя в любое время путем присвоения строки TableName
свойство DataTable.
var table = new DataTable();
table.TableName = "someName";
, Надо надеяться, который поможет кому-то.
Лучший способ диагностировать эти виды ошибок WCF (те, которые действительно не говорят Вам очень) состоит в том, чтобы позволить проследить. В Вашем web.config файле добавьте следующее:
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information"
propagateActivity="true">
<listeners>
<add name="ServiceModelTraceListener"
type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
initializeData="wcf-traces.svclog"/>
</listeners>
</source>
</sources>
</system.diagnostics>
можно тогда открыть получающийся файл в утилите SvcTraceViewer.exe, которая прибывает в SDK Платформы.NET (или с Visual Studio). На моей машине это может быть найдено в %PROGRAMFILES %\Microsoft SDKs\Windows\v6.0A\Bin\SvcTraceViewer.exe.
Просто ищут сообщение об ошибке (полужирным красный), и это скажет Вам конкретно, какова Ваша проблема.
Атрибутом, который Вы хотите, является OperationContract (в интерфейсе) / Операционное Поведение (на методе):
[ServiceContract]
public interface ITableProvider
{
[OperationContract]
DataTable GetTbl();
}
[OperationBehavior]
public DataTable GetTbl(){
DataTable tbl = new DataTable("testTbl");
//Populate table with SQL query
return tbl;
}
кроме того, в... Я думаю сервисная конфигурация..., Вы хотите определить, что ошибки могут быть отправлены. Вы могли бы поражать ошибку, которая является чем-то как размер сообщения, к большому, и т.д. Можно зафиксировать это путем уклонения с квотами читателя и таким.
По умолчанию wsHttpBinding имеет получить квоту размера подобных 65 КБ, поэтому если бы XML сериализированной таблицы данных является больше, чем которые, это бросило бы ошибку (и я на 95% уверен таблица данных, является больше, чем 65 КБ с данными в нем).
можно изменить настройки для квот читателя и такой в web.config
/ app.config
, или можно установить его на обязательном экземпляре в коде. Но да, это, вероятно, какова Ваша проблема, если Вы не изменили ее по умолчанию.
члены WSHttpBindingBase - Взгляд на свойство ReaderQuotas, а также свойство MaxReceivedMessageSize.
Вы, вероятно, унесли свою квоту - таблица данных больше, чем позволенный максимальный размер пакета для Вашего соединения.
, вероятно, необходимо установить MaxReceivedMessageSize и MaxBufferSize к более высоким значениям на соединении.
Я думаю, что Darren, скорее всего, корректен - значения по умолчанию предусмотрели WCF, являются смехотворно маленькими и если Вы врезаетесь в них, Вы заканчиваете с ошибками, которые может быть трудно разыскать. Они, кажется, появляются, как только Вы пытаетесь сделать что-либо вне простого тестового сценария. Я потратил впустую больше времени, чем я хотел бы допустить отлаживать проблемы, которые оказались связанными с различной конфигурацией (размер) настройки на обоих клиент и сервер. Я думаю, что закончил тем, что изменил почти всех их, напр. MaxBufferPoolSize, MaxBufferSize, MaxConnections, MaxReceivedMessageSize, и т.д.
Однако утилита SvcTraceViewer, также упомянутая, являются большими. Я действительно сталкивался с несколькими случаями, где это не было столь же полезно, как мне понравится, но в целом это - хороший инструмент для анализа коммуникационного потока и ошибок.