Как отладить службу WCF в размещенном решении? - PullRequest
0 голосов
/ 26 июля 2011

Я создал довольно простой веб-сервис, который имеет 1 метод: UploadFile.Очевидно, это работает на моей машине ©.Однако, как только я загружаю его, метод возвращает статус 202 (Принят).Тем не менее, файл никогда не приходит туда, и я не вижу никаких ошибок.Я добавляю логирование почти в каждую секунду, как в коде, но не похоже, что метод действительно выполняется.

Как мне отладить что-то подобное?

Вот мой сервер-боковой код для справки:

[ServiceContract]
interface IUploaderService
{
    [OperationContract(IsOneWay = true)]
    [WebInvoke(Method = "POST", UriTemplate = "/UploadFile?fileName={fileName}")]
    void UploadFile(string fileName, Stream fileContents);
}


[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class UploaderService : IUploaderService //ServiceHostFactory
{
    public void UploadFile(string fileName, Stream fileContents)
    {
        Log.Add("In UploadFile");
    }
}

Ответы [ 2 ]

2 голосов
/ 02 августа 2011

У вас есть интересная проблема, и я поиграл с ней и написал решение в посте на http://blogs.msdn.com/b/carlosfigueira/archive/2011/08/02/wcf-extensibility-system-diagnostic-tracing.aspx.

По сути, вместо трассировки в файл (что является обычным способом трассировки), вы добавили бы специальный прослушиватель трассировки, который собирал бы трассировки из вашего приложения. Вы можете использовать одну из баз данных, предоставленных GoDaddy (MySql, SqlServer, EasyDB), или, как в примере кода, приведенном в посте, сохранить трассировки в памяти и предоставить их через другой сервис WCF.

0 голосов
/ 26 июля 2011

попробуйте следующий

[ServiceContract]
interface IUploaderService
{
    [OperationContract(IsOneWay = true)]
    [WebInvoke(Method = "POST", UriTemplate = "/UploadFile?fileName={fileName}")]
    [WebContentType("application/octet-stream")]
    void UploadFile(string fileName, Stream fileContents);
}

Если это не сработает, я бы тоже попробовал

[OperationContract]

таким образом, если что-то случится с сервисом, вы получите отзыв на стороне клиента.

...