如何让端点监听我的网络服务?

时间:2016-09-14 11:49:22

标签: c# web-services wcf visual-studio-2012 soap

我遇到了3个技术问题,其中涉及编写一个Web服务,当你调用localhost时会触发它,这样一旦你键入localhost / whatever或者localhost就会返回给你一个消息。

如何让端点监听您的Web服务,例如localhost端点?换句话说,如何将网页与您的书面Web服务相关联?

当我尝试在MS Visual Studio中运行chrome时,出现以下错误:

  

无法添加服务。可能无法访问服务元数据。使   确保您的服务正在运行并公开元数据。

接下来是:

  

错误:无法从Service1.svc获取元数据如果这是Windows   (R)请访问您的通信基金会服务   检查您是否已在指定的位置启用元数据发布   地址。有关启用元数据发布的帮助,请参阅   元数据中的MSDN文档包含不可能的引用   已解决:''。没有端点可以接受   消息。这通常是由不正确的地址或SOAP引起的   行动。有关更多详细信息,请参阅InnerException(如果存在)。该   远程服务器返回错误:(404)Not Found.HTTP GET错误
  URI:HTML文档不包含Web服务发现   信息。

这是我的服务代码,后跟webconfig文件,如果有任何帮助的话。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.ServiceModel.Web;
using System.Text;

namespace MyNameIsTwitter
{
    [ServiceContract(Namespace = "http://localhost/")]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class Service1
    {
        // To use HTTP GET, add [WebGet] attribute. (Default ResponseFormat is WebMessageFormat.Json)
        // To create an operation that returns XML,
        //     add [WebGet(ResponseFormat=WebMessageFormat.Xml)],
        //     and include the following line in the operation body:
        //         WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml";
        [OperationContract]
        public string DoWork()
        {
            // Add your operation implementation here
            int error = 0;
            string url = HttpContext.Current.Request.Url.AbsoluteUri;
            // http://localhost:1302/TESTERS/Default6.aspx

            string path = HttpContext.Current.Request.Url.AbsolutePath;
            // /TESTERS/Default6.aspx

            string host = HttpContext.Current.Request.Url.Host;
            // localhost

            switch (host)
            {
                case "//localhost": switch (path)
                                    {
                                        case "": error = 1;
                                                 break;
                                        default: break;
                                    } 
                                    break;
                default: break;
            }
            if (error == 1)
            {
                return "Try /hello/:name"; 
            }
            else
            {
                return "worked";
            }
        }

        // Add more operations here and mark them with [OperationContract]
    }
}

的web.config

   <?xml version="1.0"?>

    <!--
      For more information on how to configure your ASP.NET application, please visit
      http://go.microsoft.com/fwlink/?LinkId=169433
      -->

    <configuration>
        <system.web>
          <compilation debug="true" targetFramework="4.5" />
          <httpRuntime targetFramework="4.5" />
        </system.web>

        <system.serviceModel>
            <behaviors>
                <endpointBehaviors>
                    <behavior name="MyNameIsTwitter.Service1AspNetAjaxBehavior">
                        <enableWebScript />
                    </behavior>
                </endpointBehaviors>
            </behaviors>
            <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
                multipleSiteBindingsEnabled="true" />
            <services>
              <service name="MyNameIsTwitter.Service1">
                <endpoint address="localhost/" behaviorConfiguration="MyNameIsTwitter.Service1AspNetAjaxBehavior"
                    binding="webHttpBinding" contract="MyNameIsTwitter.Service1" />
              </service>
            </services>
        </system.serviceModel>
    </configuration>

1 个答案:

答案 0 :(得分:0)

您需要了解MEX:Try this

关于你的404错误。您需要在本地IIS上运行Web服务。