প্রদত্ত ইউআরআই স্কিম 'https' অবৈধ; প্রত্যাশিত 'http'। প্যারামিটারের নাম: মাধ্যমে


281

আমি https- র মাধ্যমে ব্যবহার করার জন্য বেসিক এইচটিএলপাইন্ডিংয়ের উপরে একটি ডাব্লুসিএফ পরিষেবা করার চেষ্টা করছি। এখানে আমার ওয়েব কনফিগ:

<!-- language: xml -->
<service behaviorConfiguration="MyServices.PingResultServiceBehavior"
         name="MyServices.PingResultService">
    <endpoint address="" 
              binding="basicHttpBinding" 
              bindingConfiguration="defaultBasicHttpBinding"
              contract="MyServices.IPingResultService">
        <identity>
            <dns value="localhost" />
        </identity>
    </endpoint>
    <endpoint address="mex" 
              binding="mexHttpBinding" 
              contract="IMetadataExchange" />
</service>
...
<bindings>
  <basicHttpBinding>
    <binding name="defaultBasicHttpBinding">
      <security mode="Transport">
        <transport clientCredentialType="None"/>
      </security>
    </binding>
  </basicHttpBinding>
</bindings>
...
<behaviors>
  <serviceBehaviors>
    <behavior name="MyServices.UpdateServiceBehavior">
      <serviceMetadata httpsGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
  </serviceBehaviors>
</behaviors>

আমি ডাব্লুসিএফএসটারম ব্যবহার করে সংযোগ করছি যা সমস্ত মেটা ডেটা সঠিকভাবে পুনরুদ্ধার করতে সক্ষম, তবে আমি যখন আসল পদ্ধতিটি কল করি তখন তা পাই:

প্রদত্ত ইউআরআই স্কিম 'https' অবৈধ; প্রত্যাশিত 'http'। প্যারামিটারের নাম: মাধ্যমে


4
জার্মান ভাষায় ত্রুটি বার্তাটি " দাস bereitgestellte ইউআরআই-স্কিমা" https "ist ungültig; ইরওয়ারটেট ওয়ার্ড" HTTP "। প্যারামিটারনাম: মাধ্যমে ", যদি কেউ এটি গুগল করছে।
উওয়ে কেইম

উত্তর:


240

আপনার app.config- তে বার্তা শংসাপত্র যুক্ত করার চেষ্টা করুন:

<bindings> 
<basicHttpBinding> 
<binding name="defaultBasicHttpBinding"> 
  <security mode="Transport"> 
    <transport clientCredentialType="None" proxyCredentialType="None" realm=""/> 
    <message clientCredentialType="Certificate" algorithmSuite="Default" />
  </security> 
</binding> 
</basicHttpBinding> 
</bindings> 

35
ওপিতে এই প্রতিক্রিয়ার জন্য আপনাকে ধন্যবাদ; আমার একই সমস্যা ছিল এবং << সুরক্ষা> ট্যাগের মোডটি "নয়" এর ডিফল্ট থেকে "পরিবহন" এ পরিবর্তন করে এটি স্থির করে দেওয়া হয়েছিল।
ওটিস

1
<ম্যাসেজ> ব্লক ব্যতীত যা আইআইএস 6 কোনও কারণে প্রত্যাখ্যান করেছিল, এটি ভালভাবে কাজ করেছে।
ক্রিস চুব

4
আমার প্রকল্পে একই কনফিগারেশনটি অনুলিপি করেছেন তবে এটি কিছুই কার্যকর করে না। আমি যোগ করতে কিছু মিস করেছি?

1
তোমাকে অনেক ধন্যবাদ. আমি অনলাইনে পাওয়া বেশ কয়েকটি সমাধান চেষ্টা করেছিলাম কিন্তু সেগুলির কোনওটিই কাজ করে না। এই এক নিখুঁত ছিল।
অ্যাসনেটডেভোপার

59

উত্তর হিসাবে এটি যুক্ত করা, যেহেতু আপনি মন্তব্যগুলিতে বেশি অভিনব বিন্যাস করতে পারবেন না।
আমি আমার ওয়েব সার্ভিস ক্লায়েন্টকে সম্পূর্ণ কোডে তৈরি এবং বাঁধাই না করে আমার একই সমস্যা ছিল।
কারণটি হ'ল ডিএলএল একটি সিস্টেমে আপলোড হচ্ছিল যা কনফিগার ফাইল ব্যবহার নিষিদ্ধ করেছে।

এসএসএলের সাথে যোগাযোগের জন্য আপডেট করার প্রয়োজন কোডটি এখানে ...

Public Function GetWebserviceClient() As WebWorker.workerSoapClient
    Dim binding = New BasicHttpBinding()
    binding.Name = "WebWorkerSoap"
    binding.CloseTimeout = TimeSpan.FromMinutes(1)
    binding.OpenTimeout = TimeSpan.FromMinutes(1)
    binding.ReceiveTimeout = TimeSpan.FromMinutes(10)
    binding.SendTimeout = TimeSpan.FromMinutes(1)

    '// HERE'S THE IMPORTANT BIT FOR SSL
    binding.Security.Mode = BasicHttpSecurityMode.Transport

    Dim endpoint = New EndpointAddress("https://myurl/worker.asmx")

    Return New WebWorker.workerSoapClient(binding, endpoint)
End Function

আপনি কীভাবে আপনার ওয়েব পরিষেবার জন্য ক্লাস তৈরি করেছেন?
কাইয়াক

এটা কাজ করে! আমার সি # তেও আমার একই সমস্যা ছিল। কেবল অনুলিপি করুন পেস্ট এবং সমস্যার সমাধান।
ব্যবহারকারী 3417479

@ কাইয়াক - আমি এখনও সমস্ত স্ট্যান্ডার্ড স্টাফ দিয়ে উন্নয়নের জন্য পরিষেবাটি জরিমানার সাথে সংযুক্ত করতে পারি, ভিএসকে আমার জন্য ক্লাস তৈরি করতে দেওয়া, যা পরে ডিএলএলে সংকলিত হয়। এটি কেবল রানটাইমের সময় আমি সমস্ত সংযোগের তথ্য সহ কনফিগার ফাইলটি আপলোড করতে পারি না।
আইডলন

বেসিক এইচটিপবাইন্ডিং সিস্টেম.সোসওয়ারমোডেল ব্যবহারের মাধ্যমে উপস্থিত রয়েছে; FYI ভবিষ্যতের পাঠক।
ডিএলহ

38

থেকে পরিবর্তন করুন

<security mode="None">

প্রতি

<security mode="Transport">

আপনার ওয়েবকনফাইগ ফাইলে। এই পরিবর্তনটি আপনাকে http এর পরিবর্তে https ব্যবহার করতে দেবে


30

আপনি কি এটি ক্যাসিনি (বনাম ডেভ সার্ভার) বা আইআইএস-তে কোনও সার্টি ইনস্টল করে চালাচ্ছেন? দেব ওয়েব সার্ভারে সুরক্ষিত শেষ পয়েন্টগুলি হুক করার চেষ্টা করার আগে আমার সমস্যা হয়েছিল issues

এখানে বাধ্যতামূলক কনফিগারেশন যা আমার জন্য অতীতে কাজ করেছে। পরিবর্তে basicHttpBinding, এটি ব্যবহার করে wsHttpBinding। আপনার পক্ষে যদি সমস্যা হয় তবে আমি জানি না।

<!-- Binding settings for HTTPS endpoint -->
<binding name="WsSecured">
    <security mode="Transport">
        <transport clientCredentialType="None" />
        <message clientCredentialType="None"
            negotiateServiceCredential="false"
            establishSecurityContext="false" />
    </security>
</binding>

এবং শেষ পয়েন্ট

<endpoint address="..." binding="wsHttpBinding"
    bindingConfiguration="WsSecured" contract="IYourContract" />

এছাড়াও, পরিবহন সুরক্ষা সক্ষম করতে আপনি ক্লায়েন্ট কনফিগারেশন পরিবর্তন করেছেন তা নিশ্চিত করুন।


1
স্থানীয় আইআইএস 7 স্ব-স্বাক্ষরিত যা নিশ্চিতভাবে ঘটবে ইনস্টল
isg

13
"এছাড়াও, পরিবহন সুরক্ষা সক্ষম করতে আপনি ক্লায়েন্ট কনফিগারেশন পরিবর্তন করেছেন তা নিশ্চিত করুন।" -- সদুপদেশ. খুব সহজেই উপেক্ষা করা হয়েছে এবং ডাব্লুসিএফ এর ত্রুটিগুলির মধ্যে কোনও চিহ্ন দেবে না।
লুক পুপলেট

বৈধ আলাপ-আলোচনা না করে
সার্ভিসসিডেন্সিয়াল

20

একটি custom bindingদৃশ্যে আমারও একই ব্যতিক্রম ছিল । যে কেউ এই পদ্ধতির ব্যবহার করছেন, এটিও পরীক্ষা করে দেখতে পারেন।

আমি আসলে একটি local WSDL ফাইল থেকে পরিষেবা রেফারেন্স যুক্ত করছি । এটি সফলভাবে যুক্ত হয়েছে এবং কনফিগার ফাইলটিতে প্রয়োজনীয় কাস্টম বাইন্ডিং যুক্ত হয়েছিল। তবে প্রকৃত পরিষেবাটি ছিল https; না http। সুতরাং আমি হিসাবে HTTransport এলিমেট পরিবর্তন httpsTransport। এটি সমস্যার সমাধান করেছে

<system.serviceModel>
<bindings>

  <customBinding>
    <binding name="MyBindingConfig">

      <textMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16"
        messageVersion="Soap11" writeEncoding="utf-8">
        <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
          maxBytesPerRead="4096" maxNameTableCharCount="16384" />
      </textMessageEncoding>

      <!--Manually changed httpTransport to httpsTransport-->
      <httpsTransport manualAddressing="false" maxBufferPoolSize="524288"
        maxReceivedMessageSize="65536" allowCookies="false" authenticationScheme="Anonymous"
        bypassProxyOnLocal="false" 
        decompressionEnabled="true" hostNameComparisonMode="StrongWildcard"
        keepAliveEnabled="true" maxBufferSize="65536" 
        proxyAuthenticationScheme="Anonymous"
        realm="" transferMode="Buffered" unsafeConnectionNtlmAuthentication="false"
        useDefaultWebProxy="true" />
    </binding>
  </customBinding>

</bindings>

<client>
  <endpoint address="https://mainservices-certint.mycompany.com/Services/HRTest"
    binding="customBinding" bindingConfiguration="MyBindingConfig"
    contract="HRTest.TestWebserviceManagerImpl" name="TestWebserviceManagerImpl" />
</client>


</system.serviceModel>

তথ্যসূত্র

  1. ডাব্লুসিএফ উভয়ই HTTP এবং https এ সংযুক্ত cust

19

আমার কাছে ওপি'র মতোই একই সমস্যা ছিল। আমার কনফিগারেশন এবং পরিস্থিতি অভিন্ন ছিল। ভিজ্যুয়াল স্টুডিওতে একটি পরীক্ষা প্রকল্পে একটি পরিষেবা রেফারেন্স তৈরি করার পরে এবং পরিষেবাটি কাজ করছে কিনা তা নিশ্চিত করার পরে আমি শেষ পর্যন্ত এটিকে সংকুচিত করে ডাব্লুসিএফএসটারমে একটি সমস্যা হিসাবে চিহ্নিত করেছি। স্টর্মে আপনাকে "কনফিগার" সেটিংস বিকল্পে ক্লিক করতে হবে ("ক্লায়েন্ট কনফিগারেশন নয়")। এটি ক্লিক করার পরে, পপ আপ হওয়া ডায়ালগের "সুরক্ষা" ট্যাবে ক্লিক করুন। "প্রমাণীকরণের ধরণ" "কিছুই নয়" তে সেট করা আছে তা নিশ্চিত করুন (ডিফল্টটি "উইন্ডোজ প্রমাণীকরণ")। প্রেস্টো, কাজ করে! আমি সর্বদা ডাব্লুসিএফএসটারমে আমার পদ্ধতিগুলি পরীক্ষা করে দেখি কারণ সেগুলি তৈরি করে চলেছি, তবে এসএসএলে ইতিমধ্যে সেটআপ করা আছে এমন কোনওটির সাথে সংযোগ স্থাপনের জন্য এটি ব্যবহার করার চেষ্টা করিনি। আশা করি এটি কাউকে সাহায্য করবে!


আমার ঠিক একই সমস্যাটি ছিল, তবে "ব্যবহারকারী নাম / পাসওয়ার্ড প্রমাণীকরণ" ব্যবহার করে আমার কাছে ভুল পাসওয়ার্ড ছিল। দেখা যাচ্ছে যে আপনি যদি নিজের পাসওয়ার্ড পরিবর্তন করেন তবে আপনাকে সেবার URL টি এবং তা নেওয়ার জন্য সরঞ্জামদণ্ডে "রিফ্রেশ" বোতামটি ক্লিক করতে হবে।
রায়ান শিলিংটন

12

একই ইস্যুতে দৌড়ে গেল, আমার সমাধানটি এভাবেই শেষ হয়েছিল:

        <basicHttpsBinding>
            <binding name="VerificationServicesPasswordBinding">
              <security mode="Transport">
              </security>
            </binding>
            <binding name="VerificationServicesPasswordBinding1" />
        </basicHttpsBinding>

আমি মূলত এইচটিপিপি-র প্রতিটি ঘটনাকেই এইচটিটিপিএস দিয়ে প্রতিস্থাপন করেছি। আপনি যদি চান তবে উভয়কেই যুক্ত করার চেষ্টা করতে পারেন।


5
লক্ষ্য করা উচিত যে বেসিকএইচটিপিএসবাইন্ডিং 4.5 এবং নতুনতর।
জাগড

7

আপনি যদি এই প্রোগ্রামটিমেটিকভাবে করেন এবং ওয়েবকনফাইগে না করে থাকেন তবে:

new WebHttpBinding(WebHttpSecurityMode.Transport)

গ্রেট। আমি সর্বদা .exe.config ফাইলগুলিকে ঘৃণা করি এবং এর পরিবর্তে কোড দিয়ে সবকিছু করি। এটি আমার সমস্যার সমাধান করেছে।
nivs1978

4

এটি মনে রাখা ভাল যে কোড / অ্যাপ্লিকেশন ইত্যাদি পুনরায় সংকলন না করে বিভিন্ন সার্ভারে (ডিভ / ডেমো / প্রোডাকশন ইত্যাদি) কনফিগার পরিবর্তনগুলি সহজ করতে কনফিগারেশন ফাইলগুলি মাধ্যমিক ফাইলগুলিতে বিভক্ত করা যেতে পারে উদাহরণস্বরূপ আমরা অনসাইট ইঞ্জিনিয়ারদের অনুমতি দেওয়ার জন্য তাদের ব্যবহার করি আসলে 'আসল' ফাইলগুলিকে স্পর্শ না করেই শেষ বিন্দু পরিবর্তন করুন।

প্রথম পদক্ষেপটি হ'ল ডাব্লুপিএফ অ্যাপ থেকে কনফিগের বাইন্ডিং বিভাগটিকে তার নিজস্ব পৃথক ফাইলে স্থানান্তর করা।

আচরণ বিভাগটি HTTP এবং https উভয়কেই অনুমতি দেওয়ার জন্য সেট করা হয়েছে (উভয়কেই অনুমতি দেওয়া থাকলে অ্যাপটিতে কোনও প্রভাব ফেলবে বলে মনে হয় না)

<serviceMetadata httpsGetEnabled="true" httpGetEnabled="true" />

এবং আমরা বাইন্ডিং বিভাগটি তার নিজস্ব ফাইলে সরিয়ে নিয়েছি;

 <bindings configSource="Bindings.config" /> 

Bindings.config ফাইলটিতে আমরা প্রোটোকলের উপর ভিত্তি করে সুরক্ষাটি স্যুইচ করি

  <!-- None = http:// -->
  <!-- Transport = https:// -->
  <security mode="None" >

এখন সাইটে ইঞ্জিনিয়ারদের কেবলমাত্র Bindings.Config ফাইল এবং ক্লায়েন্ট.কনফিগ পরিবর্তন করতে হবে যেখানে আমরা প্রতিটি শেষ পয়েন্টের জন্য আসল URL সংরক্ষণ করি।

এইভাবে আমরা কোনও কোড পরিবর্তন না করেই অ্যাপটি পরীক্ষা করতে HTTP থেকে https এ আবার শেষ পয়েন্টটি পরিবর্তন করতে পারি।

আশাকরি এটা সাহায্য করবে.


2

ওপিতে প্রশ্নটি পুনরায় ক্যাপচার করতে:

আমি ডাব্লুসিএফএসটারম ব্যবহার করে [একটি ডাব্লুসিএফ পরিষেবাতে] সংযোগ করছি যা সমস্ত মেটা তথ্য সঠিকভাবে পুনরুদ্ধার করতে সক্ষম, তবে আমি যখন আসল পদ্ধতিটি কল করি তখন:

প্রদত্ত ইউআরআই স্কিম 'https' অবৈধ; প্রত্যাশিত 'http'। প্যারামিটারের নাম: মাধ্যমে

ডাব্লুসিএফএসটারম টিউটোরিয়ালগুলি আইআইএস এবং এসএসএল এর সাথে কাজ করার ক্ষেত্রে এই বিষয়টিকে সম্বোধন করে ।

তাদের সমাধানটি আমার পক্ষে কাজ করেছে:

  1. ত্রুটিটি ঠিক করতে, একটি ক্লায়েন্ট কনফিগার তৈরি করুন যা ডাব্লুসিএফ পরিষেবা কনফিগারেশনের সাথে মেলে। এটি করার সবচেয়ে সহজ উপায় ভিজ্যুয়াল স্টুডিও সহ io

    • ভিজ্যুয়াল স্টুডিও খুলুন এবং পরিষেবাতে একটি পরিষেবা রেফারেন্স যুক্ত করুন। ভিএস পরিষেবার সাথে মেলে এমন একটি অ্যাপকনফাইগ ফাইল তৈরি করবে

    • App.config ফাইলটি সম্পাদনা করুন যাতে এটি ডাব্লুসিএফএসটারম দ্বারা পড়তে পারে। দয়া করে ক্লায়েন্ট অ্যাপকনফাইগ ফাইলগুলি লোড হচ্ছে দেখুন । নিশ্চিত করুন যে শেষ পয়েন্ট / @ নাম এবং শেষ পয়েন্ট / @ চুক্তির বৈশিষ্ট্যগুলি ডাব্লুসিএফস্টর্মের মানগুলির সাথে মেলে।

  2. [ক্লায়েন্ট কনফিগারেশন টুবার বোতাম ব্যবহার করে] পরিবর্তিত অ্যাপ্লিকেশন কোডফাইগটি লোড করুন।

  3. পদ্ধতিটি চাওয়া। এবার পদ্ধতিটির অনুরোধটি আর ব্যর্থ হবে না

আইটেমের (1) কার্যকর বুলেটটির অর্থ হ'ল ডিফল্ট "সার্ভিস রেফারেন্স 1" দ্বারা শেষ পয়েন্ট চুক্তির বৈশিষ্ট্যটির পূর্বনির্ধারিত নামের স্থানের উপসর্গটি সরিয়ে দেওয়া to

<endpoint ... contract="ServiceReference1.ListsService" ... />

সুতরাং আপনি অ্যাপ্লিকেশন কনফিগ যে আপনি WCFStorm এ লোড করেন যা আপনি তালিকাগুলির জন্য চান:

<endpoint ... contract="ListsService" ... />

2

আমার কাজ করতে আমার নিম্নলিখিত বাইন্ডিংগুলির প্রয়োজন:

        <binding name="SI_PurchaseRequisition_ISBindingSSL">
          <security mode="Transport">
            <transport clientCredentialType="Basic" proxyCredentialType="None" realm="" />
          </security>
        </binding>

1

ডাব্লুএসএইচটিপিবাইন্ডিং একটি সমস্যা কারণ রূপালী আলো এটি সমর্থন করে না!


রেফারেন্সের জন্য: উইন্ডোজ ফোন 7, উইন্ডোজ ফোন 8 বা উইনআরটি কেউই করবেন না।
জন বি

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.