未找到WCF端点/使用Windows服务不允许的方法
问题描述:
我想在Windows服务上托管我的WCF Web服务,以便前端可以访问这些方法。未找到WCF端点/使用Windows服务不允许的方法
如果我点击VS中的服务(在浏览器中查看),服务运行良好。但是,当我厌倦了使用Windows服务来托管它时,当我使用基地址和“Method Not Allow”时,它从浏览器返回“Endpoint not found”。当我指定要访问的方法时。
下面是我的代码: 主机的App.Config中:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
\t <startup>
\t \t <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6" />
\t </startup>
\t <system.serviceModel>
\t \t <behaviors>
\t \t \t <serviceBehaviors>
\t \t \t \t <behavior name="mexBehavior">
\t \t \t \t \t <serviceMetadata httpGetEnabled="true" />
\t \t \t \t </behavior>
\t \t \t </serviceBehaviors>
\t \t \t <endpointBehaviors>
\t \t \t \t <behavior name="jsonBehavior">
\t \t \t \t \t <webHttp defaultOutgoingResponseFormat="Json" />
\t \t \t \t </behavior>
\t \t \t </endpointBehaviors>
\t \t </behaviors>
\t \t <services>
\t \t \t <service behaviorConfiguration="mexBehavior" name="BestWebService.Service1">
\t \t \t \t <host>
\t \t \t \t \t <baseAddresses>
\t \t \t \t \t \t <add baseAddress="http://localhost/Service1.svc"/>
\t \t \t \t \t </baseAddresses>
\t \t \t \t </host>
\t \t \t \t <endpoint address="" binding="webHttpBinding" behaviorConfiguration="jsonBehavior"
\t \t \t \t \t \t contract="BestWebService.IService1"
\t \t \t \t \t \t bindingConfiguration="jsonBinding">
\t \t \t \t \t <identity>
\t \t \t \t \t \t <dns value="localhost" />
\t \t \t \t \t </identity>
\t \t \t \t </endpoint>
\t \t \t </service>
\t \t </services>
\t \t <bindings>
\t \t \t <webHttpBinding>
\t \t \t \t <binding name="jsonBinding">
\t \t \t \t \t <security mode="None">
\t \t \t \t \t \t <transport clientCredentialType="None"/>
\t \t \t \t \t </security>
\t \t \t \t </binding>
\t \t \t </webHttpBinding>
\t \t </bindings>
\t </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();
}
的Javascript
getAllVersions = function (id) {
\t $.ajax({
\t \t url: 'http://localhost/Service1.svc/GetWKSTDetails',
\t \t method: 'post',
\t \t contentType: 'application/json; charset=utf-8',
\t \t dataType: 'json',
\t \t success: function (data) {
\t \t \t var verlist = new Array();
\t \t \t var appname = new Array();
\t \t \t var applications = new Array();
\t \t \t var name = null;
\t \t \t var Object = {};
\t \t \t $.each(data.d, function (i) {
\t \t \t \t var apps = data.d[i]["AppList"].split('_');
\t \t \t \t verlist.push(data.d[i]["Version"]);
\t \t \t \t $.each(apps, function (i) {
\t \t \t \t \t appname.push(apps[i]);
\t \t \t \t })
\t \t \t \t appname.sort();
\t \t \t \t var ver = data.d[i]["Version"];
\t \t \t \t Object[ver] = { Date: data.d[i]["Date"], Applist: appname };
\t \t \t \t appname = [];
\t \t \t });
\t \t \t versionlist = Object;
\t \t \t getversion = true;
\t \t \t createDeployPanel(Object, verlist, id);
\t \t },
\t \t error: function (data) {
\t \t \t alert(JSON.stringify(data) + 'Get Versions Failed');
\t \t }
\t });
}
谢谢!
答
我无法弄清楚这个问题与Windows服务(服务托管成功寿),所以我把它切换到IIS(配置和CORS也花了一些时间来解决),现在它的工作:)
Z IService1没有装饰[ServiceContract]属性..你可以检查它吗? –
这是,我忘了包括该行 –