Reagrding WCF Service was created in the SharePoint

%3CLINGO-SUB%20id%3D%22lingo-sub-1028912%22%20slang%3D%22en-US%22%3EReagrding%20WCF%20Service%20was%20created%20in%20the%20SharePoint%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1028912%22%20slang%3D%22en-US%22%3E%3CP%3EHi%20there%2C%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3Ethe%20question%20is%20weird.%20the%20code%20in%20the%20Console%20App%20(.NET%20Core%203.0)%20works%20properly%2C%20on%20the%20contrary%2C%20we%20used%20the%20same%20code%20in%20the%20.NET%20Standard%202.0%2C%20it%20turns%20out%20the%20following%20error%20message%20%3A%3A%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%22%3CSPAN%3E%5B12%3A36%3A21%20AM%5D%20%5BERROR%5D%26nbsp%3B%20CallTecturaWebService%3A%20The%20HTTP%20request%20is%20unauthorized%20with%20client%20authentication%20scheme%20'Anonymous'.%20The%20authentication%20header%20received%20from%20the%20server%20was%20'NTLM'.%3CBR%20%2F%3E%5B12%3A36%3A21%20AM%5D%20%5BERROR%5D%26nbsp%3B%20The%20remote%20server%20returned%20an%20error%3A%20(401)%20Unauthorized.%3CBR%20%2F%3E%5B12%3A36%3A21%20AM%5D%20%5BERROR%5D%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20at%20System.Net.HttpWebRequest.GetResponse()%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%20at%20System.ServiceModel.Channels.HttpChannelFactory%601.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan%20timeout)%3C%2FSPAN%3E%22%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3Edoes%20anyone%20have%20any%20idea%20on%20it%3F%3F%3F%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%3CSTRONG%3Emy%20WCF%20web.config%3A%3C%2FSTRONG%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CPRE%3E%26lt%3Bsystem.serviceModel%26gt%3B%0A%20%20%20%20%26lt%3Bbehaviors%26gt%3B%0A%20%20%20%20%20%20%26lt%3BserviceBehaviors%26gt%3B%0A%20%20%20%20%20%20%20%20%26lt%3Bbehavior%20name%3D%22MyServiceBehavior%22%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%26lt%3BserviceMetadata%20httpGetEnabled%3D%22true%22%20httpsGetEnabled%3D%22true%22%26gt%3B%26lt%3B%2FserviceMetadata%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%26lt%3BserviceDebug%20includeExceptionDetailInFaults%3D%22true%22%26gt%3B%26lt%3B%2FserviceDebug%26gt%3B%0A%20%20%20%20%26lt%3BserviceCredentials%26gt%3B%0A%20%20%20%20%26lt%3BserviceCertificate%20findValue%3D%22extlab.litwareinc.pri%22%20storeLocation%3D%22LocalMachine%22%20storeName%3D%22My%22%20x509FindType%3D%22FindBySubjectName%22%2F%26gt%3B%0A%20%20%20%20%26lt%3B%2FserviceCredentials%26gt%3B%0A%20%20%26lt%3B%2Fbehavior%26gt%3B%0A%20%20%20%20%20%20%26lt%3B%2FserviceBehaviors%26gt%3B%0A%20%20%20%20%20%20%26lt%3BendpointBehaviors%26gt%3B%0A%20%20%20%20%20%20%20%20%26lt%3Bbehavior%20name%3D%22jsonBehaviour%22%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%26lt%3BwebHttp%20%2F%26gt%3B%0A%20%20%20%20%20%20%20%20%26lt%3B%2Fbehavior%26gt%3B%0A%20%20%20%20%20%20%26lt%3B%2FendpointBehaviors%26gt%3B%0A%20%20%20%20%26lt%3B%2Fbehaviors%26gt%3B%0A%20%20%20%20%26lt%3Bbindings%26gt%3B%0A%20%20%20%20%20%20%26lt%3BwsHttpBinding%26gt%3B%0A%20%20%20%20%20%20%20%20%26lt%3Bbinding%20name%3D%22wsHttpsEndpointBinding%22%20maxBufferPoolSize%3D%22524288%22%20maxReceivedMessageSize%3D%222147483647%22%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%26lt%3Bsecurity%20mode%3D%22TransportWithMessageCredential%22%26gt%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3B!--%26lt%3Btransport%20clientCredentialType%3D%22Ntlm%22%20%2F%26gt%3B--%26gt%3B%20%0A%20%20%20%20%26lt%3Bmessage%20clientCredentialType%3D%22Certificate%22%20%2F%26gt%3B%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%26lt%3B%2Fsecurity%26gt%3B%20%20%20%0A%20%20%20%20%20%20%20%20%26lt%3B%2Fbinding%26gt%3B%0A%20%20%20%20%20%20%26lt%3B%2FwsHttpBinding%26gt%3B%0A%20%20%20%20%26lt%3B%2Fbindings%26gt%3B%0A%20%20%20%20%26lt%3Bservices%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bservice%20name%3D%22TecturaWsListItems.v2.Service%22%20behaviorConfiguration%3D%22MyServiceBehavior%22%26gt%3B%0A%20%20%20%20%20%20%20%20%26lt%3Bendpoint%20address%3D%22%22%20binding%3D%22wsHttpBinding%22%20bindingConfiguration%3D%22wsHttpsEndpointBinding%22%20contract%3D%22TecturaWsListItems.v2.IService%22%20%2F%26gt%3B%0A%20%20%20%20%20%20%20%20%26lt%3Bendpoint%20address%3D%22mex%22%20binding%3D%22mexHttpsBinding%22%20contract%3D%22IMetadataExchange%22%26gt%3B%0A%20%20%20%20%20%20%20%20%26lt%3B%2Fendpoint%26gt%3B%0A%20%20%20%20%20%20%26lt%3B%2Fservice%26gt%3B%0A%20%20%20%20%26lt%3B%2Fservices%26gt%3B%0A%20%20%20%20%26lt%3BserviceHostingEnvironment%20aspNetCompatibilityEnabled%3D%22true%22%26gt%3B%0A%20%20%20%20%26lt%3B%2FserviceHostingEnvironment%26gt%3B%0A%20%20%26lt%3B%2Fsystem.serviceModel%26gt%3B%3C%2FPRE%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%3CSTRONG%3Emy%20code%20is%20%3A%3C%2FSTRONG%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CPRE%3Evar%20myBinding%20%3D%20new%20WSHttpBinding()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20myBinding.Security.Mode%20%3D%20SecurityMode.TransportWithMessageCredential%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20myBinding.Security.Message.ClientCredentialType%20%3D%20MessageCredentialType.Certificate%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2FmyBinding.Security.Transport.ClientCredentialType%20%3D%20HttpClientCredentialType.Ntlm%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20myEndPoint%20%3D%20new%20EndpointAddress(%22https%3A%2F%2Fextlab.litwareinc.pri%2F_vti_bin%2FTecturaWsListItems.v2%2Fservice.svc%22)%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20serviceClient.ServiceClient%20actionsClient%20%3D%20new%20serviceClient.ServiceClient(myBinding%2C%20myEndPoint)%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20actionsClient.ClientCredentials.ClientCertificate.SetCertificate(StoreLocation.LocalMachine%2C%20StoreName.My%2C%20X509FindType.FindBySubjectName%2C%0A%20%20%20%20%22extlab.litwareinc.pri%22)%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20string%20filename%20%3D%20%40%22C%3A%5CWindows%5CTemp%5Cmat-debug-13252.log%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2Fstring%20filename%20%3D%20%40%22Z%3A%5Csharing%5Cdocs%5Cdisableloopback.txt%22%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20using%20(FileStream%20fs%20%3D%20new%20FileStream(filename%2C%20FileMode.Open%2C%20FileAccess.Read))%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Create%20a%20byte%20array%20of%20file%20stream%20length%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20byte%5B%5D%20bytes%20%3D%20System.IO.File.ReadAllBytes(filename)%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2FRead%20block%20of%20bytes%20from%20stream%20into%20the%20byte%20array%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20fs.Read(bytes%2C%200%2C%20System.Convert.ToInt32(fs.Length))%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20serviceClient.OutlookMailItem%20documentData%20%3D%20new%20serviceClient.OutlookMailItem()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20documentData.Content%20%3D%20bytes%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20documentData.DomainName%20%3D%20%22outlook.com%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20documentData.EmailAddress%20%3D%20%22hilfiger1014%40outlook.com%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20documentData.FileLeafRef%20%3D%20Path.GetFileName(filename)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20documentData.MailType%20%3D%20true%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20actionsClient.UploadMSGToDocumentLibary(documentData)%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Console.WriteLine(documentData.FileLeafRef%20%2B%20%22%20has%20been%20uploaded.%22)%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2FClose%20the%20File%20Stream%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20fs.Close()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%3C%2FPRE%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-1028912%22%20slang%3D%22en-US%22%3E%3CLINGO-LABEL%3EDeveloper%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E
Highlighted
Frequent Contributor

Hi there,

 

the question is weird. the code in the Console App (.NET Core 3.0) works properly, on the contrary, we used the same code in the .NET Standard 2.0, it turns out the following error message ::

 

=========================================================================

 

"[12:36:21 AM] [ERROR]  CallTecturaWebService: The HTTP request is unauthorized with client authentication scheme 'Anonymous'. The authentication header received from the server was 'NTLM'.
[12:36:21 AM] [ERROR]  The remote server returned an error: (401) Unauthorized.
[12:36:21 AM] [ERROR]     at System.Net.HttpWebRequest.GetResponse()
   at System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)

 

 

 

=========================================================================

 

does anyone have any idea on it???

 

my WCF web.config:

 

<system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="MyServiceBehavior">
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"></serviceMetadata>
          <serviceDebug includeExceptionDetailInFaults="true"></serviceDebug>
		  <serviceCredentials>
				<serviceCertificate findValue="extlab.litwareinc.pri" storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectName"/>
		  </serviceCredentials>
		</behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="jsonBehaviour">
          <webHttp />
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <bindings>
      <wsHttpBinding>
        <binding name="wsHttpsEndpointBinding" maxBufferPoolSize="524288" maxReceivedMessageSize="2147483647">
          <security mode="TransportWithMessageCredential">  
                <!--<transport clientCredentialType="Ntlm" />--> 
				<message clientCredentialType="Certificate" />           
          </security>   
        </binding>
      </wsHttpBinding>
    </bindings>
    <services>
      <service name="TecturaWsListItems.v2.Service" behaviorConfiguration="MyServiceBehavior">
        <endpoint address="" binding="wsHttpBinding" bindingConfiguration="wsHttpsEndpointBinding" contract="TecturaWsListItems.v2.IService" />
        <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange">
        </endpoint>
      </service>
    </services>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true">
    </serviceHostingEnvironment>
  </system.serviceModel>

 

my code is :

 

var myBinding = new WSHttpBinding();
            myBinding.Security.Mode = SecurityMode.TransportWithMessageCredential;
            myBinding.Security.Message.ClientCredentialType = MessageCredentialType.Certificate;
            //myBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Ntlm;

            var myEndPoint = new EndpointAddress("https://extlab.litwareinc.pri/_vti_bin/TecturaWsListItems.v2/service.svc");

            serviceClient.ServiceClient actionsClient = new serviceClient.ServiceClient(myBinding, myEndPoint);

            actionsClient.ClientCredentials.ClientCertificate.SetCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindBySubjectName,
    "extlab.litwareinc.pri");

            string filename = @"C:\Windows\Temp\mat-debug-13252.log";
            //string filename = @"Z:\sharing\docs\disableloopback.txt";

            using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read))
            {
                // Create a byte array of file stream length
                byte[] bytes = System.IO.File.ReadAllBytes(filename);

                //Read block of bytes from stream into the byte array
                fs.Read(bytes, 0, System.Convert.ToInt32(fs.Length));

                serviceClient.OutlookMailItem documentData = new serviceClient.OutlookMailItem();
                documentData.Content = bytes;
                documentData.DomainName = "outlook.com";
                documentData.EmailAddress = "hilfiger1014@outlook.com";
                documentData.FileLeafRef = Path.GetFileName(filename);
                documentData.MailType = true;

                actionsClient.UploadMSGToDocumentLibary(documentData);

                Console.WriteLine(documentData.FileLeafRef + " has been uploaded.");

                //Close the File Stream
                fs.Close();
            }

 

0 Replies