未找到 WCF 端点/不允许使用 Windows 服务的方法
Posted
技术标签:
【中文标题】未找到 WCF 端点/不允许使用 Windows 服务的方法【英文标题】:WCF endpoint not found/method not allowed using Windows Service 【发布时间】:2018-01-07 07:35:44 【问题描述】:我想在 Windows 服务上托管我的 WCF Web 服务,以便前端可以访问这些方法。
如果我在 VS 中单击服务(在浏览器中查看),服务运行良好。但是当我厌倦了使用 Windows 服务托管它时,当我使用基地址时它会从浏览器返回“找不到端点”,而当我指定要访问的方法时它会返回“方法不允许”。
以下是我的代码: Host的App.Config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6" />
</startup>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="mexBehavior">
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="jsonBehavior">
<webHttp defaultOutgoingResponseFormat="Json" />
</behavior>
</endpointBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="mexBehavior" name="BestWebService.Service1">
<host>
<baseAddresses>
<add baseAddress="http://localhost/Service1.svc"/>
</baseAddresses>
</host>
<endpoint address="" binding="webHttpBinding" behaviorConfiguration="jsonBehavior"
contract="BestWebService.IService1"
bindingConfiguration="jsonBinding">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</service>
</services>
<bindings>
<webHttpBinding>
<binding name="jsonBinding">
<security mode="None">
<transport clientCredentialType="None"/>
</security>
</binding>
</webHttpBinding>
</bindings>
</system.serviceModel>
</configuration>
Service.cs
protected override void OnStart(string[] args)
if (host != null)
host.Close();
try
host = new ServiceHost(typeof(BestWebService.Service1));
host.Open();
catch (Exception e)
string stored = @"c:\\SETUP ERROR.txt";
using (StreamWriter sw = File.AppendText(stored))
sw.WriteLine("1: 0", e.ToString());
host.Close();
WCF 服务接口
public interface IService1
[OperationContract]
[WebInvoke(Method = "POST",
ResponseFormat = WebMessageFormat.Json,
RequestFormat =WebMessageFormat.Json)]
List<WKSTEnviornment> GetWKSTDetails();
getAllVersions = function (id)
$.ajax(
url: 'http://localhost/Service1.svc/GetWKSTDetails',
method: 'post',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (data)
var verlist = new Array();
var appname = new Array();
var applications = new Array();
var name = null;
var Object = ;
$.each(data.d, function (i)
var apps = data.d[i]["AppList"].split('_');
verlist.push(data.d[i]["Version"]);
$.each(apps, function (i)
appname.push(apps[i]);
)
appname.sort();
var ver = data.d[i]["Version"];
Object[ver] = Date: data.d[i]["Date"], Applist: appname ;
appname = [];
);
versionlist = Object;
getversion = true;
createDeployPanel(Object, verlist, id);
,
error: function (data)
alert(JSON.stringify(data) + 'Get Versions Failed');
);
谢谢!!
【问题讨论】:
Z IService1 没有用 [ServiceContract] 属性修饰..你能检查一下吗? 是的,我忘记加行了 【参考方案1】:我无法弄清楚 Windows 服务的问题(该服务已成功托管)所以我将其切换到 IIS(配置和 CORS 也花了我一些时间来解决),现在它正在工作:)
【讨论】:
以上是关于未找到 WCF 端点/不允许使用 Windows 服务的方法的主要内容,如果未能解决你的问题,请参考以下文章
ProtocolException Unhandled/(405) WCF 不允许的方法;绑定和端点看起来不错