2015年1月3日 星期六

[webservic] 簡單架站與使用教學 使用Visual Studio 2010 & C#

[Server]

1.使用Visual Studio內建專案建立

檔案->新增專案->選Vusual C#->Web->.NET Framework 3.5->ASP.NET Web Servic應用程式 。

2.因為只是簡單使用,就使用VS預設的webmethod,HelloWord!存檔關閉。

  [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }


3.建立ISS,以WIN7來說只要啟動就好,不用另外安裝


控制台->程式和功能->開啟或關閉Windows功能


選擇安裝以下的內容,主要都在Internet Onformation Services,也許可以再少裝一些東西,不過我沒測試了。



4.然後這時候應該可以使用IIS了,可以先試試127.0.0.1是否會出現







控制台->系統管理工具->Internet Information Services (IIS) 管理員


選擇連線底下的Default Web Site->點兩下,進入ASP



設定"啟用上層路徑"為true,然後選擇下面的"內容檢視"tag


進來後點選右邊的"動作"中的"進階設定"


將實體路徑改為你想要的路徑


完成後,把之前建好的HelloWord 的 Web service內容塞進你的實體路徑資料夾中。

 沒事可以在IIS按個重新整理也許能解決一些問題。

連連看自己的web servic

127.0.0.1/webservic的名稱,看你檔名是甚麼就打甚麼,我的名稱是Service1.asmx

所以是 http://127.0.0.1/Service1.asmx


出現,大功告成.....Server端



[clinet]

1.加入Web Service Reference

先建立一個C# 空白console專案,然後在專案上點右鍵,選擇"加入服務參考"


 選進階->加入 Web 參考

進來後先將你自己的Web Service網址貼到URL上,然後按旁邊的綠色小箭頭看看是否能抓到,確定OK後入下面的畫面,可以修改web 參考名稱,請注意這裡的服務名稱"Service1",好了就按"加入參考"。




2.


再來開啟Program.cs程式碼如下,重點是標記起來的那兩行,第一個(紅色)在專案名稱後方的webservice,是我的web Reference的參照名稱,下面橘色那邊是這個web service的名稱,就是網頁上看到的名稱,這樣就可以使用了,回傳資料接收後顯示。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


using ConsoleApplication2.webservice;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {

            Service1 myweb = new Service1();

            string A=myweb.HelloWorld();
            Console.WriteLine(A);
            Console.Read();
        }
    }
}



2014年12月11日 星期四

[Android] permission denied

在AndroidManifest.xml中加入紅色那行,加入寫入權限,就算只有讀取也要加入。



<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.test11"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.test11.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
</manifest>

2014年2月12日 星期三

[Matlab] Listbox 消失 single-selection listbox control requires that Value be an integer within String range




發生問題:

刪除listbox的最後一行後,listbox會消失,並在Command Windows 上顯示" Warning: single-selection listbox control requires that Value be an integer
within String range
Control will not be rendered until all of its parameter values are valid "

如下圖所示














      

                                  
 原因:

Listbox 中兩個重要的屬性 String 與 Value ,在刪減資料後,我們會重新set資料到listbox中的string,不過通常都忘記value也跟著設定,預設是不會改的,但刪除的是最後一行資料列時,指標還是指向最後一行,但資料早已不在,所以就無法顯示資料,

舉例來說

以下是我的listbox的資料與index

string={1,2,3,4,5}
value=5;


1
2
3
4
5<---

但我刪除第五筆資料時

1
2
3
4
   <-----????


刪除後指標還是標記第五個,但是資料消失了,所以會出錯。




解決方法:

if val==1
set(h_lst2,'Strin',str,'value',1);  
else
set(h_lst2,'Strin',str,'value',val-1);
end

在刪除資料後set時,把val設定成val-1,用例子表示的話,就是從原本的5只到4,這樣還是在目前listbox中的最後一個值,所以可以正常顯示。








 正常啦,網路上寫得太複雜,有的說就選擇此新矩陣大小的長度,非常複雜~