[WCF] 此集合已包含具有配置 http 的位址。此集合中,每一配置最多只能有一個位址。

2010/09/20

最近再把WCF資料佈署上去 虛擬主機的時候發生此問題..

sshot-103

此集合已包含具有配置 http 的位址。此集合中,每一配置最多只能有一個位址。
參數名稱: item

描述: 在執行目前 Web 要求的過程中發生未處理的例外情形。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。
例外詳細資訊: System.ArgumentException: 此集合已包含具有配置 http 的位址。此集合中,每一配置最多只能有一個位址。
參數名稱: item
原始程式錯誤:
在執行目前 Web 要求期間,產生未處理的例外狀況。如需有關例外狀況來源與位置的資訊,可以使用下列的例外狀況堆疊追蹤取得。


查了很多文件..

但是都不是解答..try了很多解法..
最後找到解答..

原來是事情做一半..
在寫程式很多事情..尤其是debug就跟做CPR一樣..
只有 0 分 跟 100分的差別..91cf07e3aa16738943fa1147940b48ea

首先…
建一個 Class

using System;
using System.ServiceModel;
using System.ServiceModel.Activation;

namespace WcfService1
{
    public class MyServiceHostFactory : ServiceHostFactory
    {
        protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
        {

            // 在下面的網址部分記得放入你Service的網址
            Uri webServiceAddress = new Uri("http://www.sample.com.tw/Service1.svc");
            ServiceHost webServiceHost = new ServiceHost(serviceType, webServiceAddress);
            return webServiceHost;

        }

    }
}


第一步完成了..記得要買網誌改成你 WCF的網址..

第二步..點一下Service1.svc 按右鍵選擇 View Markup

sshot-105

多加一個 Attribute
Factory="您專案的namespace.MyServiceHostFactory"

<%@ ServiceHost Language="C#" Debug="true" Service="WcfService1.Service1" CodeBehind="Service1.svc.cs" Factory="WcfService1.MyServiceHostFactory" %>





因為我的namespace 是 WcfService1 所以上述為  Factory="WcfService1.MyServiceHostFactory" ..

這樣應該就大功告成了…

感謝 40 實測..

讚一下:


0 意見:

程式 . 生活 . D小調.@2010 | Binary Design: One Winged Angel.