none
vs2008 无法添加web引用 RRS feed

  • 问题

  •  我用的是vs2008的team system版,我在添加web引用时,本机的web services能成功添加,但是web上的服务就无法添加了,例如microsoft live search 的那个web service我就老是添加不上去.

    我尝试过修改sln里那个port但是没有效果

    Dragon
    2009年3月2日 1:45

答案

  • 你好 请确认下防火墙对8080端口是否有限制?

    比如我们公司的防火墙8080是禁用了的 那么就无法通过那个代理服务器访问,

    同时 从你那篇帖子的错误信息可以看出 你没有权限访问代理服务器 所以在设置代理服务器的时候请设置对应的用户名和密码。

     

    我暂时将此贴标记,如果你有新的发现或者不满意答复,请回复帖子联系我们。谢谢,我们会尽力帮助你。


    Raymond Tang (Microsoft C# MVP)
    Denn Ich Gehoer nur mir
    .NET交流群71840452
    微软中文论坛同城社区成都QQ群:74268428
    My Chinese Blog
    Chengdu,Sichuan Province,China
    2011年3月7日 13:28
    版主

全部回复

  • 楼主,你好

    不知道你是怎么添加的,所以请你按照下面这篇文章的步骤操作后如果仍然无法添加请说明你的问题。谢谢!

    Getting Started with the Live Search Web Service API



    Microsoft Online Community Support
    2009年3月3日 8:11
  •  你好!
        我是按照你说的那个步骤添加webservice引用的,
       但是老是说操作失败,点很多次才能引用进来

    Dragon
    2009年3月3日 8:17
  • 还有就是请你看下"

    使用microsoft live search时报错"这个问题,我搞了好长时间都没能解决


    Dragon
    2009年3月3日 8:19
  • 你好,

    使用microsoft live search时报错"这个问题,我搞了好长时间都没能解决


    Dragon

    具体报什么错?



    Microsoft Online Community Support
    2009年3月3日 8:29
  • http://social.microsoft.com/Forums/zh-CN/xmlwebserviceszhchs/thread/b6acc48e-3ad7-45ea-9cc3-1e570cab2de9
    Dragon
    2009年3月3日 8:30
  • using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Web; 
    //using WebApplication1.net.live.search.api; 
    using WebApplication1.com.msn.search.soap; 
    using System.Net; 
     
    namespace WebApplication1 
        public class search 
        { 
            private MSNSearchService searchEngine; 
            private SearchRequest searchRequest; 
            private string _queryWord; 
     
            public string queryWord 
            { 
                get 
                { 
                    return this._queryWord; 
                } 
                set 
                { 
                    this._queryWord = value; 
                } 
            } 
     
            public search() 
            { 
                this.searchEngine = new MSNSearchService(); 
                this.searchRequest = new WebApplication1.com.msn.search.soap.SearchRequest(); 
     
            } 
     
            //proxy配置 
            //private void proxy(ref MSNSearchService msnSearchEngine) 
            //{ 
            //    WebProxy proxy = new WebProxy("http://ws-zzisa-01.wicresoft.com:8080", true); 
            //    proxy.Credentials = CredentialCache.DefaultCredentials; 
            //    msnSearchEngine.Proxy = proxy; 
            //} 
     
            public SearchResponse liveSearch() 
            { 
                this.searchRequest.AppID = "F004AD433E647B2D795CFA345C88042F93176933"
                this.searchRequest.Query = this._queryWord + " site:www.wicresoft.com";  //查询语句 
                searchRequest.SafeSearch = SafeSearchOptions.Moderate;  //安全 
                searchRequest.Flags = SearchFlags.MarkQueryWords; 
                searchRequest.CultureInfo = "en-US";  //语言 
                SourceRequest[] sourceRequests = new SourceRequest[2];  //建议 
                searchRequest.Requests = sourceRequests; 
                ///定义源请求 
                sourceRequests[0] = new SourceRequest(); 
                sourceRequests[0].Source = SourceType.Web; 
                sourceRequests[0].ResultFields = 
                ResultFieldMask.All | ResultFieldMask.SearchTagsArray; 
                sourceRequests[0].Count = 20; 
                sourceRequests[0].Offset = 0; 
                sourceRequests[1] = new SourceRequest(); 
                sourceRequests[1].Source = SourceType.Spelling; 
                sourceRequests[1].ResultFields = ResultFieldMask.Title; 
                sourceRequests[1].Count = 3; 
                sourceRequests[1].Offset = 0; 
                //调用search 
                //配置proxy,设置代理服务器 
     
                //搜素 
                SearchResponse searchResponse = searchEngine.Search(searchRequest); 
                return searchResponse; 
            } 
        } 
     


    Dragon
    2009年3月3日 8:32
  • 陈剑 说:

    using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Web; 
    //using WebApplication1.net.live.search.api; 
    using WebApplication1.com.msn.search.soap; 
    using System.Net; 
     
    namespace WebApplication1 
        public class search 
        { 
            private MSNSearchService searchEngine; 
            private SearchRequest searchRequest; 
            private string _queryWord; 
     
            public string queryWord 
            { 
                get 
                { 
                    return this._queryWord; 
                } 
                set 
                { 
                    this._queryWord = value; 
                } 
            } 
     
            public search() 
            { 
                this.searchEngine = new MSNSearchService(); 
                this.searchRequest = new WebApplication1.com.msn.search.soap.SearchRequest(); 
     
            } 
     
            //proxy配置 
            //private void proxy(ref MSNSearchService msnSearchEngine) 
            //{ 
            //    WebProxy proxy = new WebProxy("http://ws-zzisa-01.wicresoft.com:8080", true); 
            //    proxy.Credentials = CredentialCache.DefaultCredentials; 
            //    msnSearchEngine.Proxy = proxy; 
            //} 
     
            public SearchResponse liveSearch() 
            { 
                this.searchRequest.AppID = "F004AD433E647B2D795CFA345C88042F93176933"
                this.searchRequest.Query = this._queryWord + " site:www.wicresoft.com";  //查询语句 
                searchRequest.SafeSearch = SafeSearchOptions.Moderate;  //安全 
                searchRequest.Flags = SearchFlags.MarkQueryWords; 
                searchRequest.CultureInfo = "en-US";  //语言 
                SourceRequest[] sourceRequests = new SourceRequest[2];  //建议 
                searchRequest.Requests = sourceRequests; 
                ///定义源请求 
                sourceRequests[0] = new SourceRequest(); 
                sourceRequests[0].Source = SourceType.Web; 
                sourceRequests[0].ResultFields = 
                ResultFieldMask.All | ResultFieldMask.SearchTagsArray; 
                sourceRequests[0].Count = 20; 
                sourceRequests[0].Offset = 0; 
                sourceRequests[1] = new SourceRequest(); 
                sourceRequests[1].Source = SourceType.Spelling; 
                sourceRequests[1].ResultFields = ResultFieldMask.Title; 
                sourceRequests[1].Count = 3; 
                sourceRequests[1].Offset = 0; 
                //调用search 
                //配置proxy,设置代理服务器 
     
                //搜素 
                SearchResponse searchResponse = searchEngine.Search(searchRequest); 
                return searchResponse; 
            } 
        } 
     


    Dragon

    这是我copy的msdn上的个例子(怕自己写的错了)
    http://msdn.microsoft.com/en-us/library/bb266185.aspx
    代码在
                SearchResponse searchResponse = searchEngine.Search(searchRequest); 
    这行执行search方法时就报这个错


    Dragon
    2009年3月3日 8:35
  • 你好,你创建了ApplicationID吗?
    如果没有,请严格按照下面文章所提供的步骤操作。

    Getting Started with the Live Search API

    这个连接不是我第一次提供的连接。你仔细看看。




    Microsoft Online Community Support
    2009年3月3日 8:53
  • 我提供的代码里写了我注册的appID啊?


    Dragon
    2009年3月3日 8:56
  • 你好,
    从你三月二号的帖子来看,是没有授权。
    具体哪个地方错了还不确定。

    Microsoft Online Community Support
    2009年3月3日 9:12
  • 用这个api需要授权吗,
    我们公司防火墙用的是 microsoft firewal
    和这有关系吗

    Dragon
    2009年3月3日 9:15
  •  我上网查,网上有人说是要配置代理服务器地址,
     也就是我代码里的那个proxy(ref MSNSearchService msnSearchEngine) 方法,
    其中:
    WebProxy proxy = new WebProxy("http://ws-zzisa-01.wicresoft.com:8080", true);
    的构造函数第一个参数就是代理服务器的地址。



    不知道是不是这个原因


    Dragon
    2009年3月3日 9:17
  • 你好,
    如果你的机子在内网,而调用的webservice在外网,需要使用代理服务器配置。

    下面这个连接可以说明这个问题

    具体怎么设置可以参考下面两个连接。

    Connect to a web service through a Proxy Server

    Accessing a Web Service Through a Proxy Server




    Microsoft Online Community Support
    2009年3月3日 9:30
  • 谢谢 我看看
    Dragon
    2009年3月3日 9:37
  • 我是通过代理服务器,引用外部的webservice,所以我参照给的网页codeProject做了代理设置,
    但是还是不行.
    这是我的代码:
    1using System; 
    2using System.Collections.Generic; 
    3using System.Linq; 
    4using System.Web; 
    5//using WebApplication1.net.live.search.api; 
    6using WebApplication1.com.msn.search.soap; 
    7using System.Net; 
    8 
    9namespace WebApplication1 
    10
    11    public class search 
    12    { 
    13        private MSNSearchService searchEngine; 
    14        private SearchRequest searchRequest; 
    15        private string _queryWord; 
    16 
    17        public string queryWord 
    18        { 
    19            get 
    20            { 
    21                return this._queryWord; 
    22            } 
    23            set 
    24            { 
    25                this._queryWord = value; 
    26            } 
    27        } 
    28 
    29        public search() 
    30        { 
    31            this.searchEngine = new MSNSearchService(); 
    32            this.searchRequest = new WebApplication1.com.msn.search.soap.SearchRequest(); 
    33 
    34        } 
    35 
    36        //proxy配置 
    37        private void proxy(ref MSNSearchService msnSearchEngine) 
    38        { 
    39            NetworkCredential cr = new NetworkCredential(@"域用户账户""域用户密码""domain"); 
    40            WebProxy wp = new WebProxy("公司代理服务器", 8080); 
    41            wp.Credentials = cr; 
    42            msnSearchEngine.Proxy = wp; 
    43        } 
    44 
    45        public SearchResponse liveSearch() 
    46        { 
    47            this.searchRequest.AppID = "F004AD433E647B2D795CFA345C88042F93176933"
    48            this.searchRequest.Query = this._queryWord + " site:www.wicresoft.com";  //查询语句 
    49            searchRequest.SafeSearch = SafeSearchOptions.Moderate;  //安全 
    50            searchRequest.Flags = SearchFlags.MarkQueryWords; 
    51            searchRequest.CultureInfo = "en-US";  //语言 
    52            SourceRequest[] sourceRequests = new SourceRequest[2];  //建议 
    53            searchRequest.Requests = sourceRequests; 
    54            ///定义源请求 
    55            sourceRequests[0] = new SourceRequest(); 
    56            sourceRequests[0].Source = SourceType.Web; 
    57            sourceRequests[0].ResultFields = 
    58            ResultFieldMask.All | ResultFieldMask.SearchTagsArray; 
    59            sourceRequests[0].Count = 20; 
    60            sourceRequests[0].Offset = 0; 
    61            sourceRequests[1] = new SourceRequest(); 
    62            sourceRequests[1].Source = SourceType.Spelling; 
    63            sourceRequests[1].ResultFields = ResultFieldMask.Title; 
    64            sourceRequests[1].Count = 3; 
    65            sourceRequests[1].Offset = 0; 
    66            //调用search 
    67            //配置proxy,设置代理服务器 
    68            proxy(ref this.searchEngine); 
    69            //搜素 
    70            SearchResponse searchResponse = searchEngine.Search(searchRequest); 
    71            return searchResponse; 
    72        } 
    73    } 
    74
    75 

    那个proxy()方法就是我的代理方法,
    不知道那个域用户信息,是因该谢域管理员的,还是普通域用户的

    Dragon
    Dragon
    2009年3月5日 3:11
  • 我引用外部的webservice时"Operation is not valid due to the current state of the object"
    Dragon
    2009年3月5日 3:55
  • 你跟踪过没?
    在哪里报错?

    Microsoft Online Community Support
    2009年3月5日 4:00
  • 在执行search时报错的,
    Dragon
    2009年3月5日 4:02
  • 在searchEngine 71行设置断点,查看searchEngine,运行到71行和刚运行完71行两种情况都看看。
    Microsoft Online Community Support
    2009年3月5日 4:06
  • searchEngine
    {WebApplication1.com.msn.search.soap.MSNSearchService}
        base {System.Web.Services.Protocols.SoapHttpClientProtocol}: {WebApplication1.com.msn.search.soap.MSNSearchService}
        SearchCompleted: null
        SearchOperationCompleted: null
        Url: "http://soap.search.live.com/webservices.asmx"
        UseDefaultCredentials: false
        useDefaultCredentialsSetExplicitly: true
    运行到71行

    WebApplication1.com.msn.search.soap.MSNSearchService}
        base {System.Web.Services.Protocols.SoapHttpClientProtocol}: {WebApplication1.com.msn.search.soap.MSNSearchService}
        SearchCompleted: null
        SearchOperationCompleted: null
        Url: "http://soap.search.live.com/webservices.asmx"
        UseDefaultCredentials: false
        useDefaultCredentialsSetExplicitly: true
    你要看什么区别

    Dragon
    2009年3月5日 4:56
  • 你是怎么查看的?

    是不是选择searchEngine后,然后按Ctrl+Alt+Q查看它的成员信息。

    然后能否贴上来它的信息。

    Microsoft Online Community Support
    2009年3月5日 5:05
  • 我 msn email 给你


    Dragon
    2009年3月5日 5:20
  • 给我代码?你给我了吗? 我没收到
    Microsoft Online Community Support
    2009年3月5日 5:25
  • ==刚被拦截了
    Dragon
    2009年3月5日 5:26
  • 要么我把解决方案给你?..
    Dragon
    2009年3月5日 5:35
  • 好吧,我的EMAIL :v-kefc@microsoft.com

    Microsoft Online Community Support
    2009年3月5日 5:37
  • 邮件发了接到没,用vs2008打开


    Dragon
    2009年3月5日 5:43
  • 如何了!在线急等中...
    Dragon
    2009年3月5日 6:08
  • 怎么样了
    Dragon
    2009年3月5日 6:54
  •  hi
        如何了我那个问题还有法子解决吗,谢谢

    Dragon
    2009年3月6日 1:40
  • 你好,

    我们昨天做了测试。Live Search仍然存在问题,不知道为什么。
    所以如果没有必要一定用Live Search,你可以试试Google提供的Search。
    Google的我们昨天测试过了,完全可以,而且从使用上看,的确比微软的Live Search要好用点。

    这是那个连接。Connect to a web service through a Proxy Server
    Microsoft Online Community Support
    • 已标记为答案 KeFang Chen 2009年3月7日 3:17
    • 取消答案标记 陈剑 2009年3月7日 5:54
    2009年3月6日 1:48
  • 但是Google soap 的 api现在已经不能注册了!!
    Dragon
    2009年3月7日 5:47
  •   啷个这个页面自动刷新了?
    2009年3月7日 11:47
  • 不是不能注册,而是那个不是免费的。

    我这里有个key,是网上一个例子中的。上次我们测试过了,目前可以使用。
    Google的API好像一年需要50美圆。

    <add key="GoogleKey" value="yQZS6ZVQFHKSh7GB31h+1DaJQrjiZXdF"/>


    e.g


      string key = ConfigurationSettings.AppSettings["GoogleKey"];

            googleSearchService = new GoogleSearchService();

            System.Net.WebProxy webProxy = new System.Net.WebProxy("your proxy ip");

            System.Net.NetworkCredential networkCredential = new System.Net.NetworkCredential("your account", "Password01!", "domain");

            webProxy.Credentials = networkCredential;

            googleSearchService.Proxy = webProxy;

            try

            {

                webResult = googleSearchService.doGoogleSearch(key, txtKeyword.Text, 0, 10, false, "", false, "", "", "");

     

     

            }

            catch (Exception ex)

            {

                this.Response.Redirect("Error.aspx?info=" + ex.Message);

            }




    Microsoft Online Community Support
    2009年3月9日 2:11
  • 用 Google的api还要每年交钱啊,没看它网站上又说啊,
    那  yahoo的了? 我试了yahoo的  能用就是搜索到的东西很少

    Dragon
    2009年3月10日 5:39
  • 你好 请确认下防火墙对8080端口是否有限制?

    比如我们公司的防火墙8080是禁用了的 那么就无法通过那个代理服务器访问,

    同时 从你那篇帖子的错误信息可以看出 你没有权限访问代理服务器 所以在设置代理服务器的时候请设置对应的用户名和密码。

     

    我暂时将此贴标记,如果你有新的发现或者不满意答复,请回复帖子联系我们。谢谢,我们会尽力帮助你。


    Raymond Tang (Microsoft C# MVP)
    Denn Ich Gehoer nur mir
    .NET交流群71840452
    微软中文论坛同城社区成都QQ群:74268428
    My Chinese Blog
    Chengdu,Sichuan Province,China
    2011年3月7日 13:28
    版主