我遇到了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>