2017-07-31 32 views
0

WindowsサービスでWCF Webサービスをホストして、フロントエンドがメソッドにアクセスできるようにします。WCFエンドポイントが見つかりません/ Windowsサービスを使用するメソッドがありません

VSでサービス(ブラウザで表示)をクリックするとサービスが正常に動作します。しかし、Windowsサービスを使用してホストするのに飽きたときは、ベースアドレスと「メソッドが許可されていません」を使用したときにブラウザから「エンドポイントが見つかりません」という戻り値が返されます。以下は

私のコードです: ホストの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 }); 
 
}

感謝!!

+0

働いて、私は、Windowsサービスの問題を見つけ出すことができませんでした(サービスが正常カントーホストされている)ので、私はIISに切り替え(configおよびCORSも私に解決するためにいくつかの時間がかかりました) Z IService1は[ServiceContract]属性で装飾されていません。確認できますか? –

+0

それは、私は行を含むことを忘れていた –

答えて

0

今、それは:)

関連する問題