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