سؤال

وأنا وضع حل لنقل البيانات من الهاتف الروبوت إلى خادم (مكتوب في C # /. NET).

وأنا خلقت خدمة WCF واختبار مع المحاكي عملت كل شيء على ما يرام. ثم عندما حاولت الدخول من هاتفك المحمول (متصلة بالشبكة المنزلية واي فاي) حصلت على رسالة الاستثناء التالي:

<اقتباس فقرة>   

وorg.apache.http.conn.HttpHostConnectException: اتصال http://192.168.1.5:8000 رفض

وسأكون ممتنا حقا إذا anyonecould إعطاء نظرة على ملف التكوين واجهة وإعطاء أي نصيحة حول كيفية تمكين اتصال.

الملف web.config:

<configuration>
  <system.web>
    <compilation debug="true"/>
  </system.web>
  <system.serviceModel>
    <bindings>
      <webHttpBinding>
        <binding name="DefaultBinding"
                 allowCookies="true"
                 bypassProxyOnLocal="true" />
      </webHttpBinding>
    </bindings>
    <behaviors>
      <endpointBehaviors>
        <behavior name="RESTFriendly">
          <webHttp/>
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <services>
      <service name="RESTServer.LoginService">
        <endpoint address=""
                  behaviorConfiguration="RESTFriendly"
                  binding="webHttpBinding"
                  bindingConfiguration="DefaultBinding"
                  contract="RESTServer.ILoginService" />
      </service>
    </services>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
  </system.serviceModel>
</configuration>

واجهة:

[ServiceContract()]
public interface ILoginService
{
    [WebGet(ResponseFormat = WebMessageFormat.Xml, UriTemplate = "/username={username}&password={password}")]
    [OperationContract]
    Message Login(string username, string password);
}

وتنفيذ الخدمة:

public class LoginService : ILoginService
{
    public Message Login(string username, string password)
    {
        Message message = new Message();
        SQLWorks sqlWorks = new SQLWorks();
        string strSession = sqlWorks.Login(username, password);
        string strMessage;
        message.Session = strSession;
        if(strSession == "")
        {
            strMessage = "Login failed! Please check your username/password!";
        }
        else
        {
            strMessage = "Login Successful";
        }
        message.ErrorMessage = strMessage;
        return message;
    }
}
هل كانت مفيدة؟

المحلول

في ترتيب للاتصال الخدمة الخاص بك، لا بد من استضافتها على خادم الويب العام. يبدو أن عنوان كنت تستخدم 192.168.1.5:8000 هو عنوان الشبكة المنزلية، والتي لا يمكن الوصول إليها من العالم الخارجي (الهاتف).

نصائح أخرى

وإذا كنت تستخدم نظام التشغيل ويندوز فيستا، لديك لإضافة عنوان إلى جدار الحماية الخاص بك

وHTTP NETSH إضافة رابط urlacl = HTTP: // +: 8000 / المستخدم = \ المجال المستخدم

استخدم الملكية الفكرية LAN الخاص بك للاتصال المحاكي الخاص بك مع خدمة ويب ،، على EX: http://192.168.1.78: 8080 / خدمة ويب

ولكن يجب تمكين الخاص بك اتصال محلي انتقل الى: لوحة \ شبكة مراقبة والإنترنت \ اتصالات الشبكة

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top