日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

.net core编写转发服务

發(fā)布時間:2023/12/4 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .net core编写转发服务 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

我有個小伙伴問我,他需要寫一個轉(zhuǎn)發(fā)服務(wù)的他有很多功能要通過他的服務(wù)轉(zhuǎn)發(fā)~

技術(shù)棧又不一定asp.net core,我就想起泥水老前輩的BeetleX.FastHttpApi

中午午休,折騰了一會兒前輩,問清楚了FastHttpApi如何配置控制器依賴注入和控制器的路由配置

花了一些時間折騰,算折騰出來了

入口調(diào)用部分代碼如下

static void Main(string[] args)
{
UnitWork.Instance.Register((services)
=>
{
services.AddScoped
<Forward.Core.Forward>();

services.AddSingleton
<MaillService>();

services.AddSingleton(
typeof(IConfig), (serviceProvider)=>
{
var instance = new Config();
instance.TryAdd
<MaillService>("maill");
return instance;
});
});
UnitWork.Instance.Builder();

var mApiServer = new HttpApiServer();
mApiServer.ActionFactory.ControllerInstance
+= (o, e) =>
{
e.Controller
= UnitWork.Instance.ServiceProvider.GetRequiredService(e.Type);
};
mApiServer.Register(Assembly.Load(
"Forward.Core"));
mApiServer.Open();

Console.ReadLine();
}
}

服務(wù)本體


public class MaillService : IForwardService
{
private string userName = "2598145226@qq.com";
private string pawssword = "********";
private string _host = "smtp.qq.com";

[ParamType(
typeof(MaillModel))]
public async Task<object> ExecuteAsync(object param)
{
MaillModel maillModel
= param as MaillModel;

using (SmtpClient smtpClient = new SmtpClient(_host, 587))
{
smtpClient.DeliveryMethod
= SmtpDeliveryMethod.Network;//指定電子郵件發(fā)送方式
smtpClient.Host = _host;//指定SMTP服務(wù)器
smtpClient.Credentials = new NetworkCredential(userName, pawssword);//用戶名和密碼
smtpClient.EnableSsl = true;

MailAddress fromAddress
= new MailAddress(userName, "華燈");
MailAddress toAddress
= new MailAddress(maillModel.ToMail);
MailMessage mailMessage
= new MailMessage(fromAddress, toAddress);

mailMessage.Subject
= maillModel.Subject;//主題
mailMessage.SubjectEncoding = Encoding.UTF8;
mailMessage.Body
= maillModel.Body;//內(nèi)容
mailMessage.BodyEncoding = Encoding.UTF8;//正文編碼
mailMessage.IsBodyHtml = true;//設(shè)置為HTML格式
mailMessage.Priority = MailPriority.Normal;//優(yōu)先級

await smtpClient.SendMailAsync(mailMessage);
}

return true;
}
}

internal class MaillModel
{
public string ToMail { get; set; }
public string Subject { get; set; }
public string Body { get; set; }
}

轉(zhuǎn)發(fā)服務(wù)部分

[Controller(BaseUrl = "/Forward", SingleInstance = false)]
public class Forward
{
private IForwardFactory ForwardFactory { get; }

public Forward(IForwardFactory forwardFactory)
{
ForwardFactory
= forwardFactory;
}

[Post(Route
= "{url}")]
[NoDataConvert]
public async Task<ResponseModel> Service(string url,IHttpContext context)
{
var result = new ResponseModel()
{
RequestTime
= DateTime.Now
};

try
{
var json = context.Request.Stream.ReadString(context.Request.Length);

result.Data
= await ForwardFactory.ForwardAsync(url, json);
result.ResponseTime
= DateTime.Now;

result.IsSuccessFul
= true;
}
catch(Exception ex)
{
result.ResponseTime
= DateTime.Now;
result.Data
= ex.ToString();
}

return result;
}
}
[Controller(BaseUrl = "/Forward", SingleInstance = false)]
public class Forward
{
private IForwardFactory ForwardFactory { get; }

public Forward(IForwardFactory forwardFactory)
{
ForwardFactory
= forwardFactory;
}

[Post(Route
= "{url}")]
[NoDataConvert]
public async Task<ResponseModel> Service(string url,IHttpContext context)
{
var result = new ResponseModel()
{
RequestTime
= DateTime.Now
};

try
{
var json = context.Request.Stream.ReadString(context.Request.Length);

result.Data
= await ForwardFactory.ForwardAsync(url, json);
result.ResponseTime
= DateTime.Now;

result.IsSuccessFul
= true;
}
catch(Exception ex)
{
result.ResponseTime
= DateTime.Now;
result.Data
= ex.ToString();
}

return result;
}
}

他只需要在入口地方注入服務(wù)即可

調(diào)用一個發(fā)送郵件的服務(wù)

項目在

https://github.com/htrlq/ForwardService

原文地址:https://www.cnblogs.com/NCoreCoder/p/10839847.html

.NET社區(qū)新聞,深度好文,歡迎訪問公眾號文章匯總?http://www.csharpkit.com?


總結(jié)

以上是生活随笔為你收集整理的.net core编写转发服务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。