Tôi muốn triển khai máy chủ python com bằng cách sử dụng phần mở rộng win32com. Sau đó, sử dụng máy chủ từ bên trong .NET. Tôi đã sử dụng ví dụ sau để triển khai máy chủ com và chạy mà không gặp sự cố nhưng khi tôi cố gắng sử dụng nó bằng C#, tôi đã nhận được FileNotFoundException với thông báo sau "Truy xuất nhà máy của lớp COM cho thành phần với CLSID {676E38A6-7FA7-4BFF- 9179-AE959734DEBB} không thành công do lỗi sau: 8007007e. " . Tôi đăng các mã C# là tốt. Tôi tự hỏi nếu tôi thiếu một cái gì đó tôi sẽ đánh giá cao sự giúp đỡ nào.Tiêu thụ Máy chủ Python COM từ .NET
Cảm ơn, Sarah
#PythonCOMServer.py
import pythoncom
class PythonUtilities:
_public_methods_ = [ 'SplitString' ]
_reg_progid_ = "PythonDemos.Utilities"
# NEVER copy the following ID
# Use"print pythoncom.CreateGuid()" to make a new one.
_reg_clsid_ = pythoncom.CreateGuid()
print _reg_clsid_
def SplitString(self, val, item=None):
import string
if item != None: item = str(item)
return string.split(str(val), item)
# Add code so that when this script is run by
# Python.exe,.it self-registers.
if __name__=='__main__':
print 'Registering Com Server'
import win32com.server.register
win32com.server.register.UseCommandLine(PythonUtilities)
// the C# code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
Type pythonServer;
object pythonObject;
pythonServer = Type.GetTypeFromProgID("PythonDemos.Utilities");
pythonObject = Activator.CreateInstance(pythonServer);
}
}
}
Lưu ý cảnh báo trong mã python, không sử dụng GUID mới trên mọi cuộc gọi. Chỉ tạo GUID một lần. – gimel
Mã bạn đăng là để đăng ký máy chủ COM; bạn cũng đã triển khai (và chạy) máy chủ thực sự chưa? –
Tôi nghĩ rằng việc đăng ký máy chủ có nghĩa là nó đang chạy. Bạn có thể cho tôi thêm hướng dẫn không. cảm ơn – Sarah