Ошибка после публикации приложения Silverlight - PullRequest
0 голосов
/ 28 декабря 2011

Привет всем, сегодня я опубликовал приложение Silverlight.

При запуске выдает такие ошибки: Как вы думаете, это проблема строки подключения или нет?

enter image description here

Вот что говорит Фидлер

Request Count:  3
Bytes Sent:     1,224    (headers:1224; body:0)
Bytes Received: 16,890    (headers:792; body:16098)

URLS:

/client/ClientBin/RoadTrans-Web-DataDomainService.svc/binary/GetTransFul

Statistics:

Request Count:  1
Bytes Sent:     403    (headers:403; body:0)
Bytes Received: 5,630    (headers:264; body:5366)

ACTUAL PERFORMANCE
--------------
ClientConnected:    06:22:36.697
ClientBeginRequest:    06:22:37.428
GotRequestHeaders:    06:22:37.428
ClientDoneRequest:    06:22:37.428
Determine Gateway:    0ms
DNS Lookup:         0ms
TCP/IP Connect:    0ms
HTTPS Handshake:    0ms
ServerConnected:    06:21:35.848
FiddlerBeginRequest:    06:22:37.428
ServerGotRequest:    06:22:37.428
ServerBeginResponse:    06:22:37.443
GotResponseHeaders:    06:22:37.443
ServerDoneResponse:    06:22:37.443
ClientBeginResponse:    06:22:37.443
ClientDoneResponse:    06:22:37.443

    Overall Elapsed:    00:00:00.0150009

RESPONSE CODES
--------------
HTTP/500:     1

RESPONSE BYTES (by Content-Type)
--------------
text/html:    5,366
~headers~:    264

URL:

/client/ClientBin/RoadTrans-Web-DataDomainService.svc/binary/GetPaymentWithCustomer

Statistics:

Request Count:  1
Bytes Sent:     414    (headers:414; body:0)
Bytes Received: 5,630    (headers:264; body:5366)

ACTUAL PERFORMANCE
--------------
ClientConnected:    06:22:37.443
ClientBeginRequest:    06:22:38.834
GotRequestHeaders:    06:22:38.834
ClientDoneRequest:    06:22:38.834
Determine Gateway:    0ms
DNS Lookup:         0ms
TCP/IP Connect:    0ms
HTTPS Handshake:    0ms
ServerConnected:    06:21:35.848
FiddlerBeginRequest:    06:22:38.834
ServerGotRequest:    06:22:38.834
ServerBeginResponse:    06:22:38.846
GotResponseHeaders:    06:22:38.846
ServerDoneResponse:    06:22:38.846
ClientBeginResponse:    06:22:38.846
ClientDoneResponse:    06:22:38.846

    Overall Elapsed:    00:00:00.0120006

RESPONSE CODES
--------------
HTTP/500:     1

RESPONSE BYTES (by Content-Type)
--------------
text/html:    5,366
~headers~:    264

ESTIMATED WORLDWIDE PERFORMANCE

URL:

/client/ClientBin/RoadTrans-Web-DataDomainService.svc/binary/GetCreditorFull

Statistics:

Request Count:  1
Bytes Sent:     407    (headers:407; body:0)
Bytes Received: 5,630    (headers:264; body:5366)

ACTUAL PERFORMANCE
--------------
ClientConnected:    06:22:09.870
ClientBeginRequest:    06:22:38.834
GotRequestHeaders:    06:22:38.834
ClientDoneRequest:    06:22:38.834
Determine Gateway:    0ms
DNS Lookup:         0ms
TCP/IP Connect:    2ms
HTTPS Handshake:    0ms
ServerConnected:    06:22:38.838
FiddlerBeginRequest:    06:22:38.838
ServerGotRequest:    06:22:38.838
ServerBeginResponse:    06:22:38.863
GotResponseHeaders:    06:22:38.863
ServerDoneResponse:    06:22:38.863
ClientBeginResponse:    06:22:38.863
ClientDoneResponse:    06:22:38.864

    Overall Elapsed:    00:00:00.0300017

RESPONSE CODES
--------------
HTTP/500:     1

RESPONSE BYTES (by Content-Type)
--------------
text/html:    5,366
~headers~:    264

ESTIMATED WORLDWIDE PERFORMANCE

Ответы [ 3 ]

2 голосов
/ 28 декабря 2011

Я видел нечто подобное, потому что данные, передаваемые по проводам, были слишком большими для WCF.Можете ли вы выполнить первый вызов метода hello world?

BTW , если кто-то выделяет окно сообщения и выполняет CTRL-C, обычно система может скопировать текст erorr в буфер обмена, а затем позжеможно вставить его в документ, не делая снимок экрана.Я советую всем моим тестовым пользователям делать это вместо снимка экрана.

1 голос
/ 29 декабря 2011

Судя по сообщению об ошибке, возможно, служба WCF не найдена по URL-адресу, указанному в клиенте Silverlight.Это также может означать, что в службе WCF произошел сбой.

Существует два основных способа устранения проблем WCF, таких как:

1) Использование Fiddler для отслеживания трафикамежду клиентом silverlight и сервисом WCF.Часто будет отображаться более подробная информация, такая как точный URL-адрес, который используется, и ответы IIS, которые в противном случае показываются клиенту WCF как недействительные ответы.

2) Включите детальную трассировку WCF, добавив в свою сеть следующий блок.Раздел конфигурации config:

  <system.diagnostics>
    <sources>
      <source name="System.ServiceModel"
              switchValue="Information, ActivityTracing"
              propagateActivity="true">
        <listeners>
          <add name="traceListener"
              type="System.Diagnostics.XmlWriterTraceListener"
              initializeData="c:\log\WebTrace.svclog"  />
        </listeners>
      </source>
    </sources>
  </system.diagnostics>

После воспроизведения ошибки, дважды щелкнув по указанному имени файла, отобразится приложение просмотра журнала WCF, которое можно использовать для детализации возникающих ошибок.Это особенно полезно при решении проблем с сериализацией.

Обновление

На основе выходных данных fiddler (HTTP-ответ 500) служба WCF выдает исключение. Вот некоторая информация от Microsoft о сбоях в службах WCF и способах их устранения.

Следующим шагом должно быть включение трассировки WCF, как показано в пункте 2 выше, а затем проверка выходных данных.,Вы также можете проверить журналы событий Windows на наличие проблем, но я подозреваю, что вы их не увидите.

Я также настоятельно рекомендую обернуть тело каждого метода службы WCF в оператор try / catch, чтобы вы могли разумно ловить и сообщать об ошибках в своем коде, а не пытаться распространять их обратно клиенту WCF, по крайней мерепока вы не разобрались с перегибами.

Если вы хотите, чтобы сбои передавались обратно клиенту WCF, вы должны декорировать методы интерфейса атрибутом FaultContract , т.е.

[FaultContract(typeof(WCFException))]
0 голосов
/ 02 января 2012

Что произойдет, если вы откроете (ваш сайт) /client/ClientBin/RoadTrans-Web-DataDomainService.svc в более широком режиме?

Попробуйте открыть его на сервере или включить показанную ошибку для всех клиентов (в web.config).

Посмотрите это видео, чтобы узнать больше советов по отладке в WCF

...