编辑:
在我修改了web.config并且我没有错误之后,那很好.然后,我添加了一个新页面(html),并编写了这样的小代码来使用这样的服务:
$("#btn12").click(function (event) {
$.getJSON('http://localhost:3576/MyService.svc/GetCurrentUser', {},
function (data) {
alert(data);
});
//return false;
});我在我的FireBug中看到了以下错误:
http://localhost:3576/MyService.svc/GetCurrentUser
400 Bad Request注意:我在同一个wcf项目中添加了html页面,并自行运行该项目,因此我假设服务也在运行.
这里可能出了什么问题?
端编辑
我刚刚创建了一个新的wcf服务,当我从VS中点击f5时,我在窗口中得到了这个错误:
添加服务失败。服务元数据可能无法访问。确保您的服务正在运行并公开元数据。 错误:如果这是您可以访问的Windows (R)通信基础服务,则无法从http://localhost:3696/MobileService.svc获取元数据,请检查是否已启用指定地址的元数据发布。有关启用元数据发布的帮助,请参阅http://go.microsoft.com/fwlink/?LinkId=65455上的MSDN文档。 WS-元数据交换错误 URI:http://localhost:3696/MyService.svc 元数据包含无法解析的引用:“http://localhost:3696/MyService.svc”。在http://localhost:3696/MyService.svc没有能够接收消息的端点侦听。这通常是由不正确的地址或SOAP操作造成的。有关更多细节,请参见InnerException (如果存在)。无法连接到远程服务器。 无法连接,因为目标机器主动拒绝了127.0.0.1:3696 HTTP获取错误 URI:http://localhost:3696/MyService.svc 下载'http://localhost:3696/MyService.svc‘时出错。 无法连接到远程服务器。 无法连接,因为目标机器主动拒绝了127.0.0.1:3696
我的配置:
<behaviors>
<endpointBehaviors>
<behavior name="MyService.MyService">
<webHttp/>
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="metadataBehavior">
<serviceMetadata httpGetEnabled="true" httpGetUrl="http://localhost:2812/MyService.svc" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="MyService.MyService"
behaviorConfiguration="metadataBehavior">
<endpoint
address="http://localhost/MyService.svc"
binding="customBinding"
bindingConfiguration="jsonpBinding"
behaviorConfiguration="MyService.MyService"
contract="MyService.IMyService"/>
</service>
</services>
<bindings>
<customBinding>
<binding name="jsonpBinding">
<jsonpMessageEncoding/>
<httpTransport manualAddressing="true"/>
</binding>
</customBinding>
</bindings>
<extensions>
<bindingElementExtensions>
<add name="jsonpMessageEncoding" type="Microsoft.Ajax.Samples.JsonpBindingExtension, MyService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
</bindingElementExtensions>
</extensions>发布于 2011-03-04 21:42:59
您需要将元数据交换(mex)端点添加到服务中:
<services>
<service name="MyService.MyService" behaviorConfiguration="metadataBehavior">
<endpoint
address="http://localhost/MyService.svc"
binding="customBinding" bindingConfiguration="jsonpBinding"
behaviorConfiguration="MyService.MyService"
contract="MyService.IMyService"/>
<endpoint
address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange"/>
</service>
</services>现在,您应该能够为您的服务获取元数据。
更新: ok,所以您只是从Visual启动它--在这种情况下,它将托管在内置的服务器中。然而,只支持HTTP --您不能在绑定中使用该协议.
另外,由于您是在Cassini中托管这个,所以您的服务地址将由Cassini指定--您无需定义任何内容。
所以我的建议是:
因此,我会将配置更改为:
<behaviors>
<serviceBehaviors>
<behavior name="metadataBehavior">
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="MyService.MyService" behaviorConfiguration="metadataBehavior">
<endpoint
address="" <!-- don't put anything here - Cassini will determine address -->
binding="basicHttpBinding"
contract="MyService.IMyService"/>
<endpoint
address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange"/>
</service>
</services>一旦你有了它,尝试在Visual解决方案中对你的SVC文件执行一个View in Browser --如果这不起作用,你仍然会遇到一些大问题。
如果可以的话--现在您可以在VS中按F5,您的服务应该会出现,并且使用WCF测试客户端应用程序,您应该能够从( a)卡西尼启动服务的地址,或者( b) mex地址( Cassini的地址+ /mex)获取服务元数据。
发布于 2013-10-26 12:10:01
如果您重命名svc文件,请确保标记是正确的。您需要修改默认配置并遵循以下步骤: 1)转到SVC文件,右键单击并选择view 2)确保后面的代码和服务指向文件和类名。
发布于 2014-02-17 06:04:04
FYI -您也可以从没有足够内存的机器上得到这个错误。,我在一台有16 of内存的机器上得到了这个错误。我有一个VM运行6G和许多内存密集型的应用程序。关闭一些,这个问题就解决了。
我仍然在问题的标题中出现了错误。
添加服务失败。服务元数据可能无法访问。确保您的服务正在运行并公开元数据。
虽然在使用WCF客户端时,我确实注意到了一个关于内存的更大的消息。
希望这能帮到别人。
https://stackoverflow.com/questions/5199541
复制相似问题