سؤال

كيف أحل الخطأ:

غير قادر على قراءة WSDL من URL: https://workflowtest.site.edu/_vti_bin/Lists.asmx?WSDL.
خطأ:401 غير مصرح به.

يمكنني بنجاح عرض WSDL من المتصفح باستخدام نفس حساب المستخدم.لست متأكدًا من المصادقة المستخدمة (أساسية أم متكاملة).

كيف سأكتشف ذلك؟

الكود الذي يجري المكالمة هو:

<cfinvoke 
  username="username" 
  password="password"
  webservice="https://workflowtest.liberty.edu/_vti_bin/Lists.asmx?WSDL" 
  method="GetList" 
  listName="{CB02EB71-392E-4906-B512-8EC002F72436}"
>

الانطباع الذي لدي هو أن ColdFusion لا يحب أن يتم المصادقة عليه للحصول على WSDL.

تتبع المكدس الكامل:

coldfusion.xml.rpc.XmlRpcServiceImpl$CantFindWSDLException: Unable to read WSDL from URL: https://workflowtest.liberty.edu/_vti_bin/Lists.asmx?WSDL.
  at coldfusion.xml.rpc.XmlRpcServiceImpl.retrieveWSDL(XmlRpcServiceImpl.java:709)
  at coldfusion.xml.rpc.XmlRpcServiceImpl.access$000(XmlRpcServiceImpl.java:53)
  at coldfusion.xml.rpc.XmlRpcServiceImpl$1.run(XmlRpcServiceImpl.java:239)
  at java.security.AccessController.doPrivileged(Native Method)
  at coldfusion.xml.rpc.XmlRpcServiceImpl.registerWebService(XmlRpcServiceImpl.java:232)
  at coldfusion.xml.rpc.XmlRpcServiceImpl.getWebService(XmlRpcServiceImpl.java:496)
  at coldfusion.xml.rpc.XmlRpcServiceImpl.getWebServiceProxy(XmlRpcServiceImpl.java:450)
  at coldfusion.tagext.lang.InvokeTag.doEndTag(InvokeTag.java:413)
  at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2662)
  at cftonytest2ecfm1787185330.runPage(/var/www/webroot/tonytest.cfm:16)
  at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:196)
  at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:370)
  at coldfusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:65)
  at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:279)
  at coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:48)
  at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40)
  at coldfusion.filter.PathFilter.invoke(PathFilter.java:86)
  at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:70)
  at coldfusion.filter.BrowserDebugFilter.invoke(BrowserDebugFilter.java:74)
  at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28)
  at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38)
  at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:46)
  at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38)
  at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22)
  at coldfusion.CfmServlet.service(CfmServlet.java:175)
  at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89)
  at jrun.servlet.FilterChain.doFilter(FilterChain.java:86)
  at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42)
  at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
  at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
  at jrun.servlet.FilterChain.service(FilterChain.java:101)
  at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106)
  at jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42)
  at jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:286)
  at jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543)
  at jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:203)
  at jrunx.scheduler.ThreadPool$DownstreamMetrics.invokeRunnable(ThreadPool.java:320)
  at jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:428)
  at jrunx.scheduler.ThreadPool$UpstreamMetrics.invokeRunnable(ThreadPool.java:266)
  at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)
هل كانت مفيدة؟

المحلول

وCFInvoke يمكن أن تمر سوى المصادقة الأساسية، لا نوافذ المصادقة المتكاملة.

سوف

وشير لن تكون قادرة على الرجوع إلى المصادقة الأساسية منذ شير يحتاج إلى معرفة من هو الدعوة الخدمات للتحقق التوثيق والترخيص للبيانات المطلوبة.

وأفضل رهان هنا هو خلق خدمة asp.net وكيل يمكنك الاتصال مع CFInvoke التي سوف انتحال صفة مصادقة Windows تحتاج إلى استدعاء خدمة ويب SharePoint.

وثمة خيار آخر يتمثل في إنشاء كائن كوم C # مما يجعل الدعوة مصدق وبتمرير المعلومات إلى CF عند استدعاء كائن C # كوم من CF.

نصائح أخرى

قد يساعدك منشور المدونة هذا على موقع cfsilence.com. تكامل ColdFusion/Sharepoint - الجزء الأول - المصادقة

ما يتلخص في:

  • يستخدم ColdFusion مكتبة خدمة الويب Apache Axis
  • افتراضيًا، لا تستطيع هذه المكتبة القيام بأي شيء سوى مصادقة HTTP الأساسية
  • يمكنك تكوين المحور لاستخدام مكتبة عميل HTTP بديلة (جاكرتا كومنز)
  • هذا يمكن القيام به مصادقة NTLM، لا حاجة لتغيير الكود أو نظام مصادقة IIS
  • بعد إعادة تشغيل ColdFusion، يجب أن تكون جاهزًا للبدء

لا اعلم شيئا عن كولد فيوجن لكنني أول مشتبه به بلدي ستكون مشكلة permision بسيطة وليس أي شيء محدد CF.

هل مصادقة استخدام دعوة CF بسيطة أو المتكاملة؟ هل مباراة IIS؟ يمكنك تصفح للWSDL باستخدام IE / فايرفوكس ونفس حساب المستخدم؟

ووانها خطأ في إذن مثل darpy وريان أقترح، وأسهل شيء نفعله هو منح الإذن المناسب لكولد فيوجن. على ويندوز، والتخلف كولد فيوجن ويعمل مثل حساب النظام المحلي. يمكنك تغيير ذلك عن طريق تحديث خصائص تسجيل الدخول للخدمة ويندوز لكولد فيوجن.

وكان لي نفس المشكلة.

وفتح IIS الخاص بك، وتغيير LoginType إلى الأساسي. (في بلدي ويندوز الألمانية هو: "Verzeichnissicherheit" -> "Steuerung قصر المجهول Zugriffs اوند دير Authentifizierung" -> "Bearbeiten" -> تعيين خانة الاختيار "Standardauthentifizierung")

و-Kevin

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