- ปกติเมื่อเราเขียน web service บนเครื่องตัวเอง สมมุติ เราสร้าง service ขึ้นม 1 web ในเว็บก็มีตัวอย่าง method อันหนึ่ง คือ HelloWorld เมื่อเราทำการทดสอบบนเครื่องตัวเอง เราก็จะเรียกhttp://localhost/service1/service.asmx
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeNZ03JwxQVpEmtoSj-8qEe1C7jUyp1-R654z5E61VlWlIhG1LT0UjBjh9nZ41226YHTldpX1Ls1sQToUDu_KyV2dakmRnKUvQVT3lu_5ba-PzvIUjeEVlvtWupCyF2BeK6bZNxA/s400/sshot-2.png)
- ซึ่งจะมีปุ่ม invoke หรือ ถ้าเป็น method ที่มีการรับค่าก็จะขึ้น textbox ให้เราใส่ค่าลงไปก่อนกดปุ่ม Invoke
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiS9J6pP3Pm8geuDStaFgjq3XnWPNdIS0XfKaNnJ8UQv5BfiPIlEHVVVCUS0w8QD-ZQ-G9DB7oOl6R2rPefBVpv0N9MmPOIaSWZcjTZFCWq2iRPe8P3HdXG8JInX1I87uspoH76ag/s400/sshot-1.png)
- แต่ถ้าเราเรียก service นั้นจากเครื่องอื่นก็จะขึ้นปะมาณนี้ซะงั้น ไม่มีปุ่ม Invoke ให้เราทดสอบ oper นั้นๆอ่ะ ตอนแรก งงอย่างแรง แต่พอทดสอบก็ถึงบางอ้อว่า เป็นเรื่องปกติ ของเค้าที่จะทดสอบได้เฉพาะ localhost ซะงั้น
- แสดงว่าไม่ใช่ปัญหา แต่ถ้าเราต้องการปรับแต่งให้ทดสอบ service บนเครื่อง client อื่นได้นั้นเราต้องปรับแต่งค่าใน web.config ซะหน่อย
Config
1. เปิด web.config ของ service ตัวนั้นขึ้นมา
2. เพิ่มตามนี้เข้าไปภายใต้ <system.web>
<webServices>
<protocols>
<add name="HttpPost" />
<add name="HttpGet" />
</protocols>
</webServices>
3. ผลลัพธ์ก็จะเป็นประมาณเนี๋ย
<configuration>
<system.web>
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
</system.web>
</configuration>
สรุป
- อันนี้เป็นเรื่องปกติเมื่อเราทำการเรียกทดสอบ service จาก client
- วิธีแก้เพิ่มแท๊ก <webservices> เข้าไปภายใต้ <system.web>
References: