WCF与IP地址主机(WCF Hosting with IP Address)

2019-10-29 04:24发布

我创建了一个WCF服务,返回JSON数据。 这里是我的代码:

namespace AppServices
{
[ServiceContract]
public interface Service1
{
[OperationContract]
[WebInvoke(Method = "GET", UriTemplate = "/GetCities", BodyStyle = WebMessageBodyStyle.WrappedRequest,
RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
List<City> GetCityCode();
}
[DataContract]
public class City
{
[DataMember]
public string CityId { get; set; }
[DataMember]
public string CityName { get; set; }
[DataMember]
public string StateId { get; set; }
[DataMember]
public string Priority { get; set; }
}
}

public class ServiceAPI : Service1
    {
 public List<City> GetCityCode()
        {
            adp = new SqlDataAdapter("Select * from tblCity", offcon);
            adp.Fill(ds, "City");
            var city = (from DataRow dr in ds.Tables["City"].Rows
                        select new
                        {
                            Id = dr["intCityId"].ToString(),
                            Name = dr["strTitle"].ToString(),
                            sid = dr["intStateId"].ToString(),
                            priority = dr["intPriority"].ToString()
                        }).Select(x => new City() { CityId = x.Id, CityName = x.Name, StateId = x.sid, Priority = x.priority }).ToList();

            return city;
        }
}

我的web.config如下:

    <?xml version="1.0"?>
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <services>
      <service behaviorConfiguration="ServiceBehaviour" name="PatrikaAPIService.PatrikaService">
        <endpoint address="" behaviorConfiguration="web" binding="webHttpBinding"
                  contract="PatrikaAPIService.IPatrikaService"/>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="ServiceBehaviour">
          <serviceMetadata httpGetEnabled="true"/>
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="web">
          <webHttp/>
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <serviceHostingEnvironment/>
  </system.serviceModel>
</configuration>

一切工作正常,当我在本地主机上运行此WCF为:本地主机:13186 / ServiceApp.svc / GetCities

问题:当我通过我的IP地址作为192.168.1.16:13186/ServiceApp.svc/GetCities

它给一个错误,网站忙得不亦乐乎...&我想在URL来访问其他计算机上的我的意思是我的网络上的其他电脑这个WCF服务。 我已经改变了我的web.config按我的要求,现在如果有谁知道下一步该怎么做来承载IP地址此服务。 或主机到Microsoft Server 2003的SP2此。 请帮忙..

Answer 1:

我假设这是卡西尼? 如果是这样的 - 如果主机头的“localhost”卡西尼只响应我想。 当然,你不会得到它通过你的IP回应。

它的主机在IIS或IIS表达。

在不同的音符-如果这是一个.NET 4的项目,你可能有兴趣注意休息服务这种方式来实现通过WCF是不久将成为遗产-并通过更换Asp.Net的Web API一旦它去了RTM(这是目前在RC阶段) - 我劝你要考虑这个新的技术,如果你能(它不会解决,虽然这个问题)。



文章来源: WCF Hosting with IP Address