2012-10-03 2 views
0

asp.net에 webservice를 만들고 있습니다. 아래는 내가받는 반응입니다.asp.net에서 웹 서비스를 생성하는 동안 xml 태그를 제거하십시오.

<?xml version="1.0" encoding="utf-8"?> 
<string xmlns="http://tempuri.org/">{"Question1":"do the like the idea of the first speaker?","Option1":"YES","Option2":"NO","Option3":"NOT SURE","Option4":"","Option5":"","Type":"button","QID":"q1"}</string> 

여기에서 xml 태그를 제거 할 수 있나요?

[WebMethod(EnableSession = true)] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public string GetQuestions() 
{ 
    return new JavaScriptSerializer().Serialize(Biz.BAL.GetQuestions()); 
} 
+0

어떻게 위 반응을 얻고있다? 웹 브라우저를 통해 웹 서비스를 테스트 할 때 액 얄올 아약스 호출을 수행 할 때와 다른 결과가 나옵니다. – AardVark71

답변

1

처럼 뭔가를해야만해야 할 생각 다음이 올 Y 름입니다.

1) "* .ASMX httphandler를 S로 재 라우팅 "

<httpHandlers> 
     <remove path="*.asmx" verb="*"/> 
     <add path="*.asmx" verb="*" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add verb="GET,HEAD" path="ScriptResource.axd" validate="false" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
    </httpHandlers> 

2)"JSON 직렬화 " 당신은 확인하기 위해의 web.config에 설정 jsonSerialisation를 추가 할 수 있는지 JSON 직렬화가 작동 criptHandlerFactory :

<configSections> 
    <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
     <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
      <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> 
      <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
       <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/> 
       <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> 
       <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> 
       <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/></sectionGroup></sectionGroup></sectionGroup> 
    </configSections> 
+0

jsonSerialisation이 잘 작동하고 있습니다 ... –

+0

다른 생각 ... 이미 [System.Web.Script.Services.ScriptService] 속성을 웹 서비스에 추가 했습니까? (아마도 ScriptMethod를 호출 했으므로 아마도 그렇습니다.) – AardVark71

+0

yes..its there ... –

0

이 코드를 사용하여 안전하고 convinient이다 ASP

var X = new XmlDocument(); 
X.LoadXml(YOUR_RESPONSE); 
return X.DocumentElement.InnerText; 
자바 스크립트에서

나는 당신이 당신이 경우 web.config 반면 확인할 수이

var start = YOUR_RESPONSE.indexOf('<string '); 
start = YOUR_RESPONSE.indexOf('>', start)+ 1; 
YOUR_RESPONSE.substring(start, YOUR_RESPONSE.lastIndexOf('</string>')); 
+0

이것은 자바 스크립트 코드 또는 asp.net 코드 ??? –

+0

업데이트 됨! 나는 JS 코드를 추가했다. – Amir

+0

XmlDocument x = 새 XmlDocument(); x.LoadXml (새 javaScriptSerializer(). Serialize (Biz.BAL.GetQuestions(). ToString())); return x.DocumentElement.InnerText; –

1

웹 방법에서 이러한 라인을 사용하십시오 :


JavaScriptSerializer Machinejson = new JavaScriptSerializer(); 
      this.Context.Response.AppendHeader("Access-Control-Allow-Origin", "*"); 
      this.Context.Response.ContentType = "application/json; charset=utf-8"; // to remove xml tag from response 
      this.Context.Response.Write(Machinejson.Serialize([Object or string to return in form of json)])); 
관련 문제