Вызов веб-метода ASMX завершается неудачно с XMLException, но работает без клиента ASP.Net - PullRequest
0 голосов
/ 09 сентября 2011

Когда я тестирую свой веб-сервис с моего веб-сервера разработки (экран ниже), я нажимаю кнопку INVOKE, и открывается новое окно, запрашивает ОТКРЫТЬ или СОХРАНИТЬ, и приложение, связанное с типом файла, открывает файл в окне.

Localhost testing of webmethod

В надежде, что это сработает, когда разработчики ColdFusion (CF) вызовут веб-метод, я попытался смоделировать CF-тест, добавив несколько строк кода в мой веб-клиент .Net для вызова того же самогоwebmethod:

protected void DownloadButton3_Click(object sender, EventArgs e)
    {
        string r = txtRecordNumber.Text;
        DownloadCF(r);
    }
    private void DownloadCF(string recNumber)
    {
        string fakeURLparm = txtFakeURLParm.Text;
        brokerService.Timeout = 9999999;
        brokerService.Credentials = System.Net.CredentialCache.DefaultCredentials;
        brokerService.DownloadFileCF(fakeURLparm, recNumber);
    }

Используя эту страницу ASP.Net в качестве вызывающей стороны, я получаю очень странную ошибку (см. ниже).Обратите внимание, что в StackTrace, где за методом DownloadCF следует метод SoapHttpClientProtocol.Invoke и ошибка.Я не понимаю, почему один подход дает сбой, а другой Invoke работает правильно.

Ошибка сервера в приложении '/ sdkTrimFileServiceASMXclient'.

Data at the root level is invalid. Line 1, position 1. 
Description: An unhandled exception occurred during the execution of the current web request.       Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Xml.XmlException: Data at the root level is invalid. Line 1, position 1.

Source Error: 


Line 231:        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://cbmiweb.com/sdkTrimFileServiceASMX/DownloadFileCF", RequestNamespace="http://cbmiweb.com/sdkTrimFileServiceASMX/", ResponseNamespace="http://cbmiweb.com/sdkTrimFileServiceASMX/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
Line 232:        public string DownloadFileCF(string trimURL, string TrimRecordNumber) {
Line 233:            object[] results = this.Invoke("DownloadFileCF", new object[] {
Line 234:                        trimURL,
Line 235:                        TrimRecordNumber});
Source File: C:\ProjectsVS2010\sdkTrimFileServiceASMX\FileServiceProxy\Web References\ASMXproxy\Reference.cs    Line: 233 
Stack Trace: 
[XmlException: Data at the root level is invalid. Line 1, position 1.]
   System.Xml.XmlTextReaderImpl.Throw(Exception e) +76
   System.Xml.XmlTextReaderImpl.Throw(String res, String arg) +126
   System.Xml.XmlTextReaderImpl.ParseRootLevelWhitespace() +3975494
   System.Xml.XmlTextReaderImpl.ParseDocumentContent() +187
   System.Xml.XmlTextReaderImpl.Read() +151
   System.Xml.XmlTextReader.Read() +15
   System.Xml.XmlReader.MoveToContent() +64
   System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall) +502
   System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters) +204

[InvalidOperationException: Response is not well-formed XML.]
   System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters) +282
   FileServiceProxy.ASMXproxy.FileService.DownloadFileCF(String trimURL, String TrimRecordNumber) in C:\ProjectsVS2010\sdkTrimFileServiceASMX\FileServiceProxy\Web References\ASMXproxy\Reference.cs:233
   WebClient.launcher.DownloadCF(String recNumber) in C:\ProjectsVS2010\sdkTrimFileServiceASMX\WebClient\launcher.aspx.cs:368
   WebClient.launcher.DownloadButton3_Click(Object sender, EventArgs e) in C:\ProjectsVS2010\sdkTrimFileServiceASMX\WebClient\launcher.aspx.cs:360
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565
--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:2.0.50727.3623; ASP.NET Version:2.0.50727.3618 

----- EDIT / UPDATE: SessionИнформация от Fiddler2 Существует один сеанс, чтобы начать это.Код результата - 200. Вкладка WebView в ответе выглядит точно так же, как моя страница веб-клиента.Когда кнопка нажата, я получаю один и только один новый сеанс в Fiddler2, вставленный сюда:

#   Result  Protocol    Host    URL Body    Caching Content-Type    Process Comments    Custom  
8   500 HTTP    mdwdata /sdkTrimFileServiceASMXclient/launcher.aspx 8,167   private     text/html; charset=utf-8    iexplore:4400           

Далее следует вставка необработанного запроса для этого сеанса (уродливо, но как еще сказать это?): POST http://mdwdata/sdkTrimFileServiceASMXclient/launcher.aspx HTTP / 1.1 Принять: image / gif, image / jpeg, image / pjpeg, image / pjpeg, application / x-ms-application, application / x-ms-xbap, application / vnd.ms-xpsdocument, application / xaml + xml, application / vnd.ms-excel, application / vnd.ms-powerpoint, application / msword, / Ссылка: http://mdwdata/sdkTrimFileServiceASMXclient/launcher.aspx Accept-Language: en-us User-Agent: Mozilla / 4.0 (совместимый; MSIE 7.0; Windows NT 5.2; Trident / 4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022;.NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E; InfoPath.3) Тип содержимого: multipart / form-data;border = --------------------------- 7db1e23703ae Accept-Encoding: gzip, deflate Хост: mdwdata Длина содержимого: 2844 Подключение: Keep-AlivePragma: no-cache

-----------------------------7db1e23703ae
Content-Disposition: form-data; name="__EVENTTARGET"


-----------------------------7db1e23703ae
Content-Disposition: form-data; name="__EVENTARGUMENT"


-----------------------------7db1e23703ae
Content-Disposition: form-data; name="__LASTFOCUS"


-----------------------------7db1e23703ae
Content-Disposition: form-data; name="__VIEWSTATE"

/wEPDwULLTEzNzAzNDU3MjgPZBYCAgMPFgIeB2VuY3R5cGUFE211bHRpcGFydC9mb3JtLWRhdGEWAgIBDw8WAh4EVGV4dAUTV2ViQ2xpZW50IC0gMS4zLjguMGRkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYBBQpMb2dMaXN0Qm94GPOeMic5o+L85SmULO5z3yzNQcQ=
-----------------------------7db1e23703ae
Content-Disposition: form-data; name="__PREVIOUSPAGE"

yXPNVTg4Wvj3GjytyxWv8KoyO3MLbzw51kYChzcsuxZx7IxumYcxmkwqQIAVLmSjaEaH0sfkMpmaEFPuQoLRia8YUKhPVhh5NxqSDzyGa4Y-LGkkCe5CJRK1Rm2TUnL7Mw3w4Q2
-----------------------------7db1e23703ae
Content-Disposition: form-data; name="__EVENTVALIDATION"

/wEWEALh4p2SAQK6+/bUAgK5gaaMBQKskZf8CwLJ0JnWAwL99O3eCQKdnvCuBgLGrJLIBAKNmrGmBQKmiPS0AQKpssxKAsSb6t8KAt+EiPUEApi43CQCoqfWowgC/8zR1Ay0LlmsrFijDr0zW8kPfHiRkTNgYw==
-----------------------------7db1e23703ae
Content-Disposition: form-data; name="txtURL"

http://MDWDATA/sdkTrimFileServiceASMX/
-----------------------------7db1e23703ae
Content-Disposition: form-data; name="txtTrimDBID"

60
-----------------------------7db1e23703ae
Content-Disposition: form-data; name="txtWorkGroupServerName"

GROUPER
-----------------------------7db1e23703ae
Content-Disposition: form-data; name="txtWorkGroupServerPort"

1137
-----------------------------7db1e23703ae
Content-Disposition: form-data; name="txtFakeURLParm"

60~GROUPER~1137
-----------------------------7db1e23703ae
Content-Disposition: form-data; name="txtTrimRecordType"

Document
-----------------------------7db1e23703ae
Content-Disposition: form-data; name="txtOptionalMetaData"

udf:Agency=MACTE~udf:Grant Number=0102030405
-----------------------------7db1e23703ae
Content-Disposition: form-data; name="FileUpload1"; filename=""
Content-Type: application/octet-stream


-----------------------------7db1e23703ae
Content-Disposition: form-data; name="txtRecordNumber"

5
-----------------------------7db1e23703ae
Content-Disposition: form-data; name="DownloadButton3"

DownloadFileCF webmethod to HTTPContext.Current
-----------------------------7db1e23703ae
Content-Disposition: form-data; name="txtCFSearchString"

sm_fulltext=google&sm_fulltext=docs&bool=and&sm_udf5=macte&sm_udf14=f&sortd1=rs_dateregistered&count&rows=50
-----------------------------7db1e23703ae
Content-Disposition: form-data; name="txtMultiLine"

User Name: CBMIWEB\johna
 Token: 988
 Authenticated: Kerberos
 System: False
 Guest: False
 Anonymous: False

-----------------------------7db1e23703ae--

Соответствующий ответ от этого сеанса от Fiddler2 - это просто HTML-страница с набором стилей, за которой следует трассировка стека из исключения XML ( Данные на корневом уровне)Недопустимая строка 1, позиция 1. ) Трассировка стека находится в исходном посте выше, поэтому здесь повторяться не будет.

У меня есть теория о том, что может быть не так, но я действительно не решаюсь делать свой обновленный пост больше (я подумываю открыть новый вопрос и сослаться на это как справочную информацию).Предложения?

...